StringIO
表示在内存中读写str(字符串)
1 | from io import StringIO #导入StringIO |
初始化StringIO然后进行读取1
2
3
4
5
6
7from io import StringIO
f = StringIO('Hello!\nHi!\nGoodbye!')
while True:
s = f.readline()
if s == '':
break
print(s.strip())
BytesIO
StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO
1 | from io import BytesIO |
写入的并非中文 而是经过UTF编码的bytesIO
初始化1
2
3from io import BytesIO
f = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
f.read() #b'\xe4\xb8\xad\xe6\x96\x87'
文件操作
如果我们要操作文件、目录,可以在命令行下面输入操作系统提供的各种命令来完成。比如dir、cp等命令。
如果要在Python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令只是简单地调用了操作系统提供的接口函数,
Python内置的os模块也可以直接调用操作系统提供的接口函数。
1 | import os |
Linux、Unix或Mac OS X
nt 表示 window系统
环境变量
使用os.environ直接查看该系统中的环境变量
获取环境变量的值os.environ.get(‘key’)
操作文件和目录
操作文件和目录的函数 一部分放在os模块中一部放在os.path模块中
查看 创建 删除1
2
3
4
5os.path.abspath('.') # 当前目录绝对路径 F:\Createwj.github.io\source\python
os.path.join('/Users/michael', 'testdir') # 在某个目录下创建一个新目录
os.mkdir('/Users/michael\pythontestdir') # 创建
os.rmdir('/Users/michael/testdir') # 删除
注意:不同操作系统返回路径格式不同 尽量少用字符串拼接
对文件重命名
1 | os.rename('test.txt', 'test.py') #对文件重命名 将test.txt 文件改名为test.py |
复制文件
shutil模块提供了copyfile()的函数,你还可以在shutil模块中找到很多实用函数,
它们可以看做是os模块的补充。
python 过滤文件1
2
3
4
5
6
7
8
9
10
11
12[x for x in os.listdir('.') if os.path.isdir(x)] #列出当前文件夹下面的所有目录
for x in os.listdir('.'):
if os.path.isdir(x):
print (x)
#列出所有py文件
[x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py']
for x in os.listdir('.'):
if os.path.isfile(x) and os.path.splitext(x)[1]=='.py':
print (x)