opening and closeing
'buffer', 'close', 'closed', 'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name', 'newlines', 'read', 'readable', 'readline', 'readlines', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'writelines'
打开
open('file', 'modes') # file: 支持相对路径或绝对路径open('a.txt', 'r')# modes:'r' # 打开只读 (默认) (文件必须存在, 否则会抛出错误)'w' # 写入,如果文件存在,将其覆盖,文件不存在,创建新文件'x' # 创建一个新文件并打开它以便编写'a' # 追加,如果文件存在,内容会被写入到已有内容的后边,文件不存在,则创建新文件'b' # 二进制模式't' # 文本模式(默认)'+' # 打开磁盘文件以进行更新(读写)# combination:'rb' # 以二进制格式打开一个文件,文件指针将会放在文件开头 (默认)'wb' # 二进制格式打开写入文件,如果文件存在,将其覆盖,文件不存在,创建新文件'ab'# 视频文件, 图片文件, pdf文件, 音频文件 需要带modes中的b'r+' # 打开一个文件用于读写'w+''a+''rb+' # 以二进制格式打开一个文件用于读写,文件指针将会放在文件的开头'wb+''ab+'
关闭
f = open()f.close() # 关闭
reading and writing
读
f = open()f.read()f.read(2) # 参数: 文件读取的字符数
写
f = open()f.write('write in char') # 参数:写入的字符串'\n' # 回车换行'\t' # 横向跳到下一制表符位置'\r' # 回车
copy
f1 = open()content = f1.read()name = f1.namef2 = open(name[:name.rfind('.')] + '.bak')f2.write(content)f1.close()f2.close()
大文件处理方式
读取大文件的时候,禁止使用read()
, readline()
, readlines()
方法读取.
读取小部分内容,多次读取
f1 = open()while True: content = f1.read(1024) if not content: break
with open()
# 如果文件是基于行的with open(...) as f: for line in f: process(line)
fileinput处理
import fileinputfor line in fileinput.input(['xxx.log']): print line
定位读写
seek()
:指针偏移量
tell()
: 指针所在位置 seek(offset, from)offset # 偏移量 (指针移动)from # 方向[0: 文件开头, 1: 当前位置, 2: 文件末尾]
f = open()f.seek(2, 0)f.readline()f.close()
文件夹和文件操作
依靠os
内置模块, 完成系统相关操作
文件重命名
import osos.rename('old_name', 'new_name')
删除文件
import osos.remove('file_name') # file_name 待删除的文件
创建文件夹
import osos.mkdir('folder') # folder 文件夹名字
获取当前目录
import osos.getcdw() # 返回当前文件所在的绝对路径
获取目录列表
import osos.listdir('url') # url 列表路径os.listdir('./')
删除文件夹
import osos.rmdir('folder') # folder 待删除的文件夹
改变默认目录
import osos.chdir('../')# open() 创建在当前目录下,可以改变默认目录,使创建到其它目录下
批量重命名
方法1:
注意重命名的路径问题import osfolder_name = input('input name:')file_names = os.listdir(folder_name)os.chdir(folder_name) # 跳转至指定目录for name in file_names: _name = name[:name.rfind('.')] + '-tt-' + name[name.rfind('.'):] os.rename(name, _name)
方法2:
import osfolder_name = input('input name:')file_names = os.listdir(folder_name)for name in file_names: old_file_name = folder_name + '/' + name new_file_name = folder_name + '/' + 'haha' os.rename(old_file_name, new_file_name)