标准I/O
print("写出到标准输出")
#从标准输入读入。
str1 = input(prompt) #input希望读入一个python表达式
str2 = raw_input(prompt) #raw_input希望读入一个字符串
#输入:[x*5 for x in range(2,10,2)]
print(str1) #[10, 20, 40, 80]
print(str2) #[x*5 for x in range(2,10,2)]
文件I/O
打开文件
file = open(name, #必需,文件路径(相对或者绝对路径)。
mode='r', #可选,文件打开模式,默认只读文本模式
buffering=-1, #设置缓冲
encoding=None, #编码格式,一般utf8
errors=None, #报错级别
newline=None, #区分换行符
closefd=True, #传入的file参数类型
opener=None)
name: 文件名
buffering: =0,没有寄存
=1,会寄存行
>1,寄存区缓冲大小
<0,寄存区缓冲大小=系统默认
mode: 打开文件模式,读、写、追加等,默认只读(r)文本模式(t)
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。一般用于非文本文件如图片。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(不推荐)。
#总结为只读(r)、只写(w)、追加(a)、二进制(b)、可读可写(+)
#r、w、a可和b、+进行组合。
r 只读,指针在文件头
rb 二进制只读,这是默认模式,
r+ 可读可写。
rb+ 二进制可读可写。
w 只写,指针在文件头。文件不存在则创建。组合同r。
a append模式,指针在文件尾。文件不存在则创建。组合同r。
务必注意区分二进制模式和文本模式。
文本模式
写数据会对数据进行编码,而且会处理行结束符问题,读取的时候,会将行结束符统一转化成\n,写入的时候,会将\n转换各个平台的行结束符。
- windows行结束符,\r\n
- Unix行结束符,\n
二进制模式
以字节流形式读取,不会修改流数据。一般用于读取非文本文件,如图片、exe文件。
如果以文本模式读取图片,因为行结束符的问题,读取到的将是修改后的数据,已经被破坏。
File对象
file = open("fuck.py") # 一般要包含在try catch中
with open('fuck.py') as f: # 打开文件的最佳方法
data = f.read() # 会自动关闭文件,即使发生异常。
for line in file: # 按行读取文件
print(line) #
################属性
file.closed # 文件是否已关闭。
file.mode # 返回被打开文件的访问模式。
file.name # 返回文件的名称。
file.softspace # 如果用print输出后,是否必须跟一个空格符。
################方法
file.close() # 刷新写入buf,并关闭文件。open了别忘记close
file.flush() # 刷新write buf
file.fileno() # 返回文件描述符,整型
file.isatty() # 文件是否连接到一个终端设备上。
file.next() # 返回文件下一行。
file.wirte(string) # 将字符串str原样写入,不加换行,返回写入长度。
file.writelines(sequence) # 写入一个序列,需要自己加换行符
file.read(size=None) # 读取size个字节数据,如果没有指定或负数,将全部读取,可能内存爆表
# 文本模式下是size个字符,
# 二进模式下是size个字节
file.readline(size) # 读取整行,包括换行符。
# 到达文件尾,返回空字符串
file.readlines(sizeint) # 读取所有行并返回列表,若sizeint>0,一次读多少字节,减轻读取压力
list(file) # 同上等价
file.truncate(size) # 截取size个字节,默认为当前文件位置。
file.tell() # 当前文件标记位置,标记是读写的开始位置。
# 二进制模式下时,为从文件开始的字节数,
# 文本模式下,是一个意义不明的数字。
file.seek(offset, whence) # 移动标记位置,从from位置开始,偏移offset个字节
# from=0,文件头,默认值。
# from=1,当前标记位置
# from=2,文件末尾。
# 在文本模式下,whence只允许=0,offset必须是f.tell()的返回值或者0
os中的文件I/O
os.access(path, mode) #检验权限模式
os.rename(oldname, newname) #重命名文件
os.remove(filename) #删除文件
os.mkdir(newdir) #在当前目录创建目录
os.rmdir(dir) #删除目录,目录下的文件必须已清除。
os.chdir(newdir) #改变当前工作目录
os.getcwd() #获取当前工作目录
os.getcwdu() #返回一个当前工作目录的Unicode对象
os.chflags(path, flags) #设置路径的标记为数字标记
os.lchflags(path, flags) #设置路径的标记为数字标记,类似chflags(),但是没有软链接
os.chmod(path, mode) #更改权限
os.chown(fd, uid, gid) #更改文件所有者,用户ID和用户组ID
os.chroot(path) #改变当前进程的根目录
os.close(fd) #关闭文件描述符 fd
os.closerange(fd_low, fd_high) #关闭所有文件描述符,[fd_low,fd_high), 错误会忽略
os.dup(fd) #复制文件描述符 fd
os.dup2(fd, fd2) #将一个文件描述符 fd 复制到另一个 fd2
os.fchdir(fd) #通过文件描述符改变当前工作目录
os.fchmod(fd, mode) #改变fd文件的访问权限
os.fchown(fd, uid, gid)
os.fdatasync(fd) #强制将文件fd写入磁盘,不强制更新文件的状态信息
os.fdopen(fd, mode, bufsize) #通过文件描述符 fd 创建一个文件对象,并返回这个文件对象
os.fpathconf(fd, name) #返回文件的系统配置信息
#name为检索的系统配置的值,
#在很多标准中指定(POSIX.1, Unix 95, Unix 98, 和其它)
os.fstat(fd) #返回文件描述符fd的状态
os.fstatvfs(fd) #返回包含文件描述符fd的文件的文件系统的信息
os.fsync(fd) #强制将文件描述符为fd的文件写入硬盘。
os.ftruncate(fd, length) #裁剪文件描述符fd对应的文件, 所以它最大不能超过文件大小。
os.isatty(fd) #如果文件描述符fd是打开的,同时与tty(-like)设备相连,则返回true, 否则False。
os.lchmod(path, mode)修改连接文件权限
os.lchown(path, uid, gid) 更改文件所有者,类似 chown,但是不追踪链接。
os.link(src, dst) 创建硬链接,名为参数 dst,指向参数 src
os.listdir(path) 返回path指定的文件夹包含的文件或文件夹的名字的列表。
os.lseek(fd, pos, how)
设置文件描述符 fd当前位置为pos, how方式修改:
SEEK_SET 或者 0 设置从文件开始的计算的pos;
SEEK_CUR或者 1 则从当前位置计算; os.SEEK_END或者2则从文件尾部开始.
在unix,Windows中有效
os.lstat(path) 像stat(),但是没有软链接
os.major(device) 从原始的设备号中提取设备major号码 (使用stat中的st_dev或者st_rdev field)。
os.makedev(major, minor) 以major和minor设备号组成一个原始设备号
os.makedirs(path[, mode]) 递归文件夹创建函数。像mkdir(), 但创建的所有intermediate-level文件夹需要包含子文件夹。
os.minor(device) 从原始的设备号中提取设备minor号码 (使用stat中的st_dev或者st_rdev field )。
os.mkdir(path[, mode]) 以数字mode的mode创建一个名为path的文件夹.默认的 mode 是 0777 (八进制)。
os.mkfifo(path[, mode]) 创建命名管道,mode 为数字,默认为 0666 (八进制)
os.mknod(filename[, mode=0600, device]) 创建一个名为filename文件系统节点(文件,设备特别文件或者命名pipe)。
os.open(file, flags[, mode]) 打开一个文件,并且设置需要的打开选项,mode参数是可选的
os.openpty() 打开一个新的伪终端对。返回 pty 和 tty的文件描述符。
os.pathconf(path, name) 返回相关文件的系统配置信息。
os.pipe() 创建一个管道. 返回一对文件描述符(r, w) 分别为读和写
os.popen(command[, mode[, bufsize]]) 从一个 command 打开一个管道
os.read(fd, n)
从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。
os.readlink(path) 返回软链接所指向的文件
os.remove(path) 删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory。
os.removedirs(path) 递归删除目录。
os.rename(src, dst) 重命名文件或目录,从 src 到 dst
os.renames(old, new) 递归地对目录进行更名,也可以对文件进行更名。
os.rmdir(path) 删除path指定的空目录,如果目录非空,则抛出一个OSError异常。
os.stat(path) 获取path指定的路径的信息,功能等同于C API中的stat()系统调用。
os.stat_float_times([newvalue]) 决定stat_result是否以float对象显示时间戳
os.statvfs(path) 获取指定路径的文件系统统计信息
os.symlink(src, dst) 创建一个软链接
os.tcgetpgrp(fd) 返回与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组
os.tcsetpgrp(fd, pg) 设置与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组为pg。
os.tempnam([dir[, prefix]]) 返回唯一的路径名用于创建临时文件。
os.tmpfile() 返回一个打开的模式为(w+b)的文件对象 .这文件对象没有文件夹入口,没有文件描述符,将会自动删除。
os.tmpnam() 为创建一个临时文件返回一个唯一的路径
os.ttyname(fd) 返回一个字符串,它表示与文件描述符fd 关联的终端设备。如果fd 没有与终端设备关联,则引发一个异常。
os.unlink(path) 删除文件路径
os.utime(path, times) 返回指定的path文件的访问和修改的时间。
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) 输出在文件夹中的文件名通过在树中游走,向上或者向下。
os.write(fd, str) 写入字符串到文件描述符 fd中. 返回实际写入的字符串长度
os.path 模块 获取文件的属性信息。