sys模块
sys.argv # 命令行参数List,第一个元素是程序本身路径
sys.modules.keys() # 返回所有已经导入的模块列表
sys.path # 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.stdin.readline # 从标准输入读一行
sys.stdout.write("a") # 屏幕输出a
os 模块
os.remove() #删除文件
os.rename() #重命名文件
os.walk() #生成目录树下的所有文件名
os.chdir() #改变目录
os.mkdir/makedirs() #创建目录/多层目录
os.rmdir/removedirs #删除目录/多层目录
os.listdir() #列出指定目录的文件
os.getcwd() #取得当前工作目录
os.chmod() #改变目录权限
os.path.basename() #去掉目录路径,返回文件名
os.path.dirname() #去掉文件名,返回目录路径
os.path.abspath(__file__) # 获取脚本完整路径
os.path.join() #将分离的各部分组合成一个路径名
os.path.split() #返回(dirname(),basename())元组
os.path.splitext() #返回filename,extension)元组
os.path.getatime\ctime\mtime #分别返回最近访问、创建、修改时间
os.path.getsize() #返回文件大小
os.path.exists() #是否存在
os.path.isabs() #是否为绝对路径
os.path.isdir()/isfile() #是否为目录/文件
用例
os.path.dirname("E:/Read_File/read_yaml.py") # 返回文件所在目录 E:/Read_File
os.path.basename("E:/Read_File/read_yaml.py") # 返回文件名read_yaml.py
os.sys.path.append(*) # 添加到系统路径
os.environ # 操作系统环境变量
os.path.splitext(_file) # 分离文件名与扩展名
file_path= os.path.join("E:/", 'my.log')
# append会list嵌套; extend合并成一个list
os.listdir('/home/mi/auto_test') # ['', ''] 所有文件(夹)
解析文件
def convert(v):
if isinstance(v, dict):
ret_set = {}
for key, value in v.iteritems():
ret_set[convert(key)] = convert(value)
return ret_set
elif isinstance(v, list):
return [convert(element) for element in v]
elif isinstance(v, unicode):
return v.encode('utf-8')
else:
return v
StreamingHttpResponse
当响应中的数据量较大,即要生成的csv文件很大时,为避免超时和数据存入内存所带来的性能损耗,推荐使用StreamingHttpResponse
启动一个进程来和客户端保持长连接,所以会很消耗资源。所以如果不是特殊要求,尽量少用这种方法。
def export_to_csv(data):
class Echo(object):
def write(self, value):
return value.encode('gbk', 'ignore')
writer = csv.writer(Echo())
def rows():
yield ['标题', '作者']
for v in data:
yield [v.title, v.author]
response = StreamingHttpResponse((writer.writerow(row) for row in rows()), content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="movie.csv"'
return response
Workbook
from openpyxl import Workbook
def write_to_xlsx(data=[], filename=''):
wb = Workbook()
ws = wb.active
for v in data:
ws.append(v)
wb.save(filename)
csv
from io import StringIO
def write_to_csv(data=[], filename=''):
content = StringIO()
w = csv.writer(content)
for v in data:
w.writerow(v)
content = content.getvalue().encode('gbk', 'ignore')
with open(filename, "wb") as f:
f.write(content)
def write_to_csv(filename, data):
with open(filename, 'w', newline='') as f:
writer = csv.writer(f, dialect='excel')
for row in data:
writer.writerow(row)
def read_from_csv(filename):
with open(filename) as f: # , encoding='gbk'
reader = csv.reader(f)
for row in reader:
yield row