1.跳过读取文件的首尾
from itertools import islice
def read_file():
content=[]
# 跳过前面没用的3行数据
with open('G://国际数据主要国家(地区)年度数据.csv', 'r') as f:
# 跳过后面两行没用的数据
lines=len(f.readlines())-2
# 将文件指针指到开始位置
f.seek(0)
for line in islice(f, 3, lines):
content.append(line.split('\n')[0].split(','))
f.close()
return content
2.通过readlines()读取多行文件,但是在每行末尾会多个‘\n’
- 解决办法:
- 用 fs.read().splitlines() 替换 fs.readlines()
3 .在文件里面写入json数据格式,解决乱码问题
content = {'姓名': '李四', '学号': '10086', '班级': '大数据二班'}
with open(filepath, 'a+', encoding='utf8') as fp:
fp.write(json.dumps(content, ensure_ascii=False))
fp.close()
//encoding='utf8'设置编码格式
//ensure_ascii=False解码
import shelve
zhangsan = {'age':38, 'sex':'Male', 'address':'SDIBT'}
lisi = {'age':40, 'sex':'Male', 'qq':'1234567', 'tel':'7654321'}
with shelve.open('shelve_test.dat') as fp:
fp['zhangsan'] = zhangsan #以字典形式把数据写入文件
fp['lisi'] = lisi
for i in range(5):
fp[str(i)] = str(i)
with shelve.open('shelve_test.dat') as fp:
print(fp['zhangsan']) #读取并显示文件内容
print(fp['zhangsan']['age'])
print(fp['lisi']['qq'])
print(fp['3'])
{'sex': 'Male', 'address': 'SDIBT', 'age': 38}
38
1234567
3
4.以excel的格式写入文件
with open(filename,'a',newline='') as f:
csvwriter = csv.writer(f,dialect='excel')
csvwriter.writerow(['id','name','age'])
f.close()
1. 用os对文件基本操作
import os
fileList = [fname for fname in os.listdir(os.getcwd()) if os.path.isfile(fname) and fname.endswith('.py')]
print(fileList)
import os
file_list = os.listdir(".")
for filename in file_list:
# rindex(".")定点索引位置
pos = filename.rindex(".")
# filename[pos + 1:]切片语法 返回的是pos + 1后面的字符
if filename[pos + 1:] == "html":
newname = filename[:pos + 1] + "htm"
os.rename(filename, newname)
print(filename + "更名为:" + newname)
import os
def visitDir2(path):
if not os.path.isdir(path):
print('Error:"',path,'" is not a directory or does not exist.')
return
list_dirs = os.walk(path) #os.walk返回一个元组,包括3个元素:
#所有路径名、所有目录列表与文件列表
for root, dirs, files in list_dirs: #遍历该元组的目录和文件信息
for d in dirs:
print(os.path.join(root, d)) #获取完整路径
for f in files:
print(os.path.join(root, f)) #获取文件绝对路径
visitDir2(os.getcwd())