0%

Python文件操作,OS库

文件操作

  • readline([size]) : 不指定size就读取一行,包括换行符,指定size就读取size个字节或者遇到换行符终止。
  • seek(offset[, position]) : 移动文件指针,position 0 表示文件首,1表示当前位置,2表示文件尾
  • readlines() : 读取所有行,包括换行符,保存在列表中
  • file.writelines(itera) : 直接串在一起输出,中间没有任何分隔符,换行符需要自己加
  • write(str/bytes) : 写入文件,如果文件打开模式带 b,那写入文件内容时,str (参数)要用 encode 方法转为 bytes 形式,否则报错:TypeError: a bytes-like object is required, not 'str'
  • 用with操作文件,在with语句执行后,file会被自动关闭(close())

    1
    2
    3
    with open() as file:
    ...
    # 自动执行file.close()
  • while 后的条件不能写赋值语句(貌似赋值语句没有返回值?)

  • enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,返回enumerate类型

    1
    2
    3
    4
    5
    6
    7
    for i in enumerate(list):
    print(i)

    ##
    (0, 'a')
    (1, 'b')
    (2, 'c')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Python 文件操作

## 打开文件
input = open("./filetest_utf8.data", encoding="utf-8")
input2 = open("./filetest_gbk.data", encoding="gbk")

str = input.read(5) # 读取指定字节
print(str) # 汉字也被视为一个字节==》这是第一行

str = input.readline(5) # 会自动记忆文件指针
print(str)

# 按行读完一个文件
str = input.readline() # 读取一行,包括换行符
while "" != str:
print(str, end="")
str = input.readline()

input.seek(0,0)
strs = input.readlines() # 读取所有行,保存在列表中包括换行符
print(strs)

input.close()
input2.close()



# 接下来,使用文件写操作
## 打开文件,在文件末尾追加一行

file = open("filetest_utf8.data", mode="r+", encoding="utf-8") # 读写模式打开文件,文件指针位于文件首
str = "\n这是程序写入的第六行"

file.seek(0, 2) # 指向文件尾。偏移量为0.使用mode=a+也可以达到同样的效果
file.write(str)

## writelines(可迭代对象)

file.seek(0, 2)
strs = ['由writelines写入1', '由writelines写入2', '由writelines写入2']
file.writelines(strs) # 直接串在一起输出,中间没有任何分隔符,换行符需要自己加


file.seek(0, 0) # 文件指针再回到文件头
str = file.readline()
while str != "":
print(str, end="")
str = file.readline()

给文件加行号

1
2
3
4
5
6
7
8
9
10
file = open("filetest_utf8.data", encoding="utf-8", mode="r+")

lines = file.readlines()
file.seek(0, 0) # 从文件头开始覆盖
for i, line in enumerate(lines):
print(i,line)
tempstr = str(i) + ": "+line
file.write(tempstr)

file.close()

Python OS库

  • os.chdir(path): 改变当前路径
  • os.getcwd() : 返回当前路径
  • os.chmod(path, mode) : 更改权限
  • os.listdir(path) : 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 ‘.’ 和’..’
  • os.mknod(filename[, mode=0600[, device=0]]) : 创建文件(windows不支持,使用with open(filename,mode="w") as fp
  • os.makedirs() : 方法用于递归创建目录。
  • os.mkdir(path[, mode]) : 创建一个权限为mode的文件夹.默认的 mode 是 0777
  • os.open(file, flags[, mode]) : 打开一个文件(flags: os.O_RDONLY: 以只读的方式打开)
  • os.read(fd,n) : 从文件fd(用os.open()打开)中读取n的字节
  • os.write(fd, str) : 写入字符串到文件描述符 fd 中. 返回实际写入的字符串长度。
  • os.remove(path) : 删除文件。如果是目录就报错
  • os.removedirs(path) : 递归删除目录,目录要为空(?)
  • shutil.rmtree(path) : 递归删除非空文件夹
  • os.unlink(path) : 删除文件
  • os.rmdir(path) : 删除path指定的空目录,如果目录非空,则抛出一个OSError异常。
  • os.rename(src, dst) : 重命名文件或目录,从 src 到 dst。看起来类似于mv命令
  • os.renames(old, new) : 递归地对目录进行更名,也可以对文件进行更名。(不太明白)