Python 文件读写

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值