Python基础—文件操作(二)

简介: 逗号分隔值,以纯文本形式存储表格数据由任意数目的记录组成,记录间以换行符分隔每条记录由字段组成,字段间用逗号或制表符分隔

Python基础—文件操作(二)

CSV格式文件

逗号分隔值,以纯文本形式存储表格数据

由任意数目的记录组成,记录间以换行符分隔

每条记录由字段组成,字段间用逗号或制表符分隔

每条记录都有同样的字段序列

如有列名,位于文件第一行

每条记录数据不跨行,无空行

6.1.png

读CSV文件

年,制造商,型号,说明,价值
1997,Ford,E350,"ac, abs, moon",3000.00
1999,Chevy,"Venture""ExtendedEdition""","",4900.00
1999,Chevy,"Venture ""Extended Edition, Very Large""","",5000.00
1996,Jeep,Grand Cherokee,"MUST SELL! \nair, moon roof, loaded",4799.00

CSV文件中的数据基本上都是行和列构成的二维数据

可以使用二维列表的方法对其进行处理

CSV文件“score.csv”:

姓名,C,Java,Python,C#
罗明,95,96,85,63
朱佳,75,93,66,85
李思,86,76,96,93
郑君,88,98,76,90
王雪,99,96,91,88
李立,82,66,100,77
with open('8.2 score.csv', 'r', encoding='utf-8') as csv_obj:
data_lst = []
for line in csv_obj:
data_lst.append(line.strip().split(','))
print(data_lst)
姓名,C,Java,Python,C#
罗明,95,96,85,63
朱佳,75,93,66,85
李思,86,76,96,93
郑君,88,98,76,90
王雪,99,96,91,88
李立,82,66,100,77
[['姓名', 'C', 'Java', 'Python', 'C#'],
['罗明', '95', '96', '85', '63'],
['朱佳', '75', '93', '66', '85'],
['李思', '86', '76', '96', '93'],
['郑君', '88', '98', '76', '90'],
['王雪', '99', '96', '91', '88'],
['李立', '82', '66', '100', '77']]
def read_csv(filename):
"""
接收csv格式文件名为参数,根据逗号将每行切分为一个列表。
每行数据做为二维列表的一个元素,返回二维列表。
"""
return data_lst
with open(filename, 'r', encoding='utf-8') as csv_obj:
data_lst = [line.strip().split(',') for line in csv_obj]
if __name__ == '__main__':
file = '8.2 score.csv'  # 定义文件名变量,方便程序扩展和修改
data = read_csv(file)   # 读文件转为二维列表
print(data)             
# 输出列表

写CSV文件

def write_file(ls, new_file):
"""
接收一个二维列表和一个表示文件名的字符串为参数,
将二维列表中的列表元素中的数据拼接在一起写入文件中,
每写入一组数据加一个换行符。
"""
with open(new_file, 'w', encoding='utf-8') as file:  # 写模式
for x in ls:
file.writelines(','.join(x) + '\n')
if __name__ == '__main__':
data = [['姓名', 'C', …], …, ['李立', '82', '66', '100', '77’]]
file = 'score_new.csv’
write_file(data, file)

JSON文件

JSON 是一种跨语言的轻量级通用数据交换格式

JSON是文本格式,键必须用双引号,字符串类型

'
{
"name": "李立",
"phone": "13988776655",
"city": "武汉"
}'

dumps()

load()

内置json库,用于对JSON数据的解析和编码

JSON编码

将Python对象转为JSON格式数据

json.dumps(obj, ensure_ascii=True, indent=None, sort_keys=False)
json.dump(obj,fp, ensure_ascii=True, indent=None,sort_keys=False)

dump(obj, fp) 将“obj”转换为JSON 格式的字符串

将字符串写入到文件对象fp中


json.dumps(obj, ensure_ascii=True, indent=None, sort_keys=False)

import json

默认ensure_ascii=True,会将中文等非ASCII 字符转为unicode编码

设置ensure_ascii=False 可以保持中文原样输出

info = {'name':'李立', 'phone':'13988776655', 'city':'武汉'}
{"name": "\u674e\u7acb", "phone": "13988776655", "city": "\u6b66\u6c49"}
print(json.dumps(info, ensure_ascii=False))
{"name": "李立", "phone": "13988776655", "city": "武汉"}
print(json.dumps(info))

json.dumps(obj, ensure_ascii=True, indent=None, sort_keys=False)

indent 参数可用来对JSON 数据进行格式化输出,默认值为None

可设一个大于0 的整数表示缩进量,可读性更好

{
"name": "李立",
"phone": "13988776655",
"city": "武汉"
}
print(json.dumps(info, ensure_ascii=False, indent=4))
import json
info = {'name':'李立', 'phone':'13988776655', 'city':'武汉'}

json.dumps(obj, ensure_ascii=True, indent=None, sort_keys=False)

默认不排序

可设置sort_keys=True使转换结果按照字典升序排序

{
"name": "李立",
"phone": "13988776655",
"city": "武汉"
}
print(json.dumps(info,ensure_ascii=False,indent=4,sort_keys=True))
{
"city": "武汉",
"name": "李立",
"phone": "13988776655"
}
import json
info = {'name':'李立', 'phone':'13988776655', 'city':'武汉'}

json.dump(obj,fp, ensure_ascii=True, indent=None,sort_keys=False)

将JSON 数据写入到一个具有写权限的文件对象中

{
"name": "李立",
"phone": "13988776655",
"city": "武汉"
}
print(json.dump(info,ensure_ascii=False,indent=4))
import json
info = {'name':'李立', 'phone':'13988776655', 'city':'武汉'}
test.json” 文件中的数据

文件与文件夹操作

获取当前工作目录

os.getcwd()

返回当前程序工作目录的绝对路径

import os
result = os.getcwd()
print(result)
# F:\weiyun\2020

改变当前工作目录

os.chdir()

改变当前工作目录

import os
# \\'解析为'\','D:/testpath/path'
os.chdir('D:\\testpath\\path')
result = os.getcwd()
print(result)
# D:\testpath\path

获取文件名称列表

os.listdir()

获取指定文件夹中所有文件和文件夹的名称列表

import os
result = os.listdir('E:/股票数据/data')
print(result)
['600000.csv', '600006.csv', '600007.csv', '600008.csv', 
'600009.csv', 
'600010.csv',  …… , '688399.csv']

创建文件夹

os.mkdir()创建文件夹

os.makedirs()递归创建文件夹

import os
os.mkdir('score')
os.makedirs('score/python/final')

删除空目录

os.rmdir()

删除空目录

os.removedirs()递归删除空目录

import os
os.rmdir('score')
os.removedirs('score/python/final/')

文件重命名与删除

os.rename(oldname, newname)文件更名

os.remove(filename)

删除文件

os.path.exists(filename)

检测存在性

import os
if os.path.exists('XRD.txt'):
os.rename('XRD.txt', 'xrd.txt')
print('XRD.txt更名成功')
os.remove('xrd.txt')
print('xrd.txt已经被删除')
else:
print('XRD.txt不存在')

检测文件并读取数据

from os import path
def read_csv(filename):
with open(filename, 'r', encoding='GBK') as csv_obj:
data_lst = [line.strip().split(',') for line in csv_obj]
return data_lst
def check_path(filepath, filename):
if path.exists(filepath) and path.exists(filepath + filename):
return read_csv(filepath + filename)
else:
return '路径或文件名不存在'
if __name__ == "__main__":
data_path = 'E:/股票数据/data/'
data_file = '600009.csv'
data = check_path(data_path, data_file)
print(data)


相关文章
|
3月前
|
监控 Java 数据处理
文件操作不再难!Python系统编程实战,带你轻松驾驭文件系统与I/O
【7月更文挑战第31天】在 Python 系统编程中, 文件操作与 I/O 管理至关重要。
53 2
|
4月前
|
开发者 Python
Python基础第七篇(Python的文件操作)
Python基础第七篇(Python的文件操作)
|
27天前
|
存储 Python
Python文件操作
Python文件操作
|
28天前
|
存储 安全 Python
30天拿下Python之文件操作
30天拿下Python之文件操作
31 1
|
4月前
|
存储 安全 开发者
文件操作?Python让你轻松搞定!
【6月更文挑战第12天】Python编程中的文件操作至关重要,涉及数据存储和系统交互。通过内置的`open()`函数,开发者可轻松处理文件。以只读模式`'r'`为例,使用`with`语句打开并读取文件内容;写入文件则用`'w'`或`'a'`模式。文件对象还支持高级功能,如文件指针移动,允许随机访问。掌握这些技能能提升开发效率。
31 0
|
17天前
|
Java 程序员 Python
【Python】文件操作
【Python】文件操作
17 0
|
1月前
|
监控 安全 Java
文件操作不再难!Python系统编程实战,带你轻松驾驭文件系统与I/O
【9月更文挑战第13天】在Python系统编程中,文件操作与I/O管理至关重要。本文通过五个实战案例分享最佳实践:高效遍历文件系统、优雅处理文件读写、利用缓冲机制优化性能、并行处理文件加速任务以及异常处理确保程序稳健。使用pathlib、上下文管理器及concurrent.futures等工具,助你轻松掌握Python文件系统与I/O操作,提升编程效率和项目质量。 示例代码展示了如何使用pathlib遍历目录、with语句安全读写文件、控制缓冲区大小、并行处理多个文件以及捕获异常保证程序稳定运行。通过这些技巧,你将能够在实际项目中更加高效地管理和操作文件。
43 6
|
2月前
|
IDE 测试技术 开发工具
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
本文介绍了Python中的文件操作方法,包括使用open()打开文件、close()关闭文件、read()读取内容、readline()读取单行、readlines()读取多行、write()写入内容以及writelines()写入多行的方法。同时,探讨了文件操作模式和编码问题,并扩展了上下文管理器with...as的使用,以及对图片和音频文件操作的思考和练习。
26 1
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
|
2月前
|
安全 Python
python文件操作详解
整个文件操作过程中,我们应始终保持代码的健壮性和清晰性,确保在出现错误时资源能够被正确释放。
42 1
|
2月前
|
安全 Python
Python文件操作全面指南
【8月更文挑战第4天】Python是一种强大的编程语言,支持丰富的文件操作功能。本文全面介绍了Python文件操作,包括读取、写入、追加及关闭文件等基本操作,并演示了如何处理异常以增强程序的健壮性。此外,还深入探讨了使用`os`和`shutil`模块进行高级文件与目录管理的方法,以及如何运用上下文管理器自动管理文件资源,为读者提供了实用的代码示例和最佳实践。
56 5