标准I/O

  1. print("写出到标准输出")
  2. #从标准输入读入。
  3. str1 = input(prompt) #input希望读入一个python表达式
  4. str2 = raw_input(prompt) #raw_input希望读入一个字符串
  5. #输入:[x*5 for x in range(2,10,2)]
  6. print(str1) #[10, 20, 40, 80]
  7. print(str2) #[x*5 for x in range(2,10,2)]

文件I/O

打开文件

  1. file = open(name, #必需,文件路径(相对或者绝对路径)。
  2. mode='r', #可选,文件打开模式,默认只读文本模式
  3. buffering=-1, #设置缓冲
  4. encoding=None, #编码格式,一般utf8
  5. errors=None, #报错级别
  6. newline=None, #区分换行符
  7. closefd=True, #传入的file参数类型
  8. opener=None)
  9. name: 文件名
  10. buffering: =0,没有寄存
  11. =1,会寄存行
  12. >1,寄存区缓冲大小
  13. <0,寄存区缓冲大小=系统默认
  14. mode: 打开文件模式,读、写、追加等,默认只读(r)文本模式(t
  15. t 文本模式 (默认)。
  16. x 写模式,新建一个文件,如果该文件已存在则会报错。
  17. b 二进制模式。一般用于非文本文件如图片。
  18. + 打开一个文件进行更新(可读可写)。
  19. U 通用换行模式(不推荐)。
  20. #总结为只读(r)、只写(w)、追加(a)、二进制(b)、可读可写(+)
  21. #r、w、a可和b、+进行组合。
  22. r 只读,指针在文件头
  23. rb 二进制只读,这是默认模式,
  24. r+ 可读可写。
  25. rb+ 二进制可读可写。
  26. w 只写,指针在文件头。文件不存在则创建。组合同r
  27. a append模式,指针在文件尾。文件不存在则创建。组合同r

务必注意区分二进制模式和文本模式。
文本模式
写数据会对数据进行编码,而且会处理行结束符问题,读取的时候,会将行结束符统一转化成\n,写入的时候,会将\n转换各个平台的行结束符。

  • windows行结束符,\r\n
  • Unix行结束符,\n

二进制模式
以字节流形式读取,不会修改流数据。一般用于读取非文本文件,如图片、exe文件。
如果以文本模式读取图片,因为行结束符的问题,读取到的将是修改后的数据,已经被破坏。

File对象

  1. file = open("fuck.py") # 一般要包含在try catch中
  2. with open('fuck.py') as f: # 打开文件的最佳方法
  3. data = f.read() # 会自动关闭文件,即使发生异常。
  4. for line in file: # 按行读取文件
  5. print(line) #
  6. ################属性
  7. file.closed # 文件是否已关闭。
  8. file.mode # 返回被打开文件的访问模式。
  9. file.name # 返回文件的名称。
  10. file.softspace # 如果用print输出后,是否必须跟一个空格符。
  11. ################方法
  12. file.close() # 刷新写入buf,并关闭文件。open了别忘记close
  13. file.flush() # 刷新write buf
  14. file.fileno() # 返回文件描述符,整型
  15. file.isatty() # 文件是否连接到一个终端设备上。
  16. file.next() # 返回文件下一行。
  17. file.wirte(string) # 将字符串str原样写入,不加换行,返回写入长度。
  18. file.writelines(sequence) # 写入一个序列,需要自己加换行符
  19. file.read(size=None) # 读取size个字节数据,如果没有指定或负数,将全部读取,可能内存爆表
  20. # 文本模式下是size个字符,
  21. # 二进模式下是size个字节
  22. file.readline(size) # 读取整行,包括换行符。
  23. # 到达文件尾,返回空字符串
  24. file.readlines(sizeint) # 读取所有行并返回列表,若sizeint>0,一次读多少字节,减轻读取压力
  25. list(file) # 同上等价
  26. file.truncate(size) # 截取size个字节,默认为当前文件位置。
  27. file.tell() # 当前文件标记位置,标记是读写的开始位置。
  28. # 二进制模式下时,为从文件开始的字节数,
  29. # 文本模式下,是一个意义不明的数字。
  30. file.seek(offset, whence) # 移动标记位置,从from位置开始,偏移offset个字节
  31. # from=0,文件头,默认值。
  32. # from=1,当前标记位置
  33. # from=2,文件末尾。
  34. # 在文本模式下,whence只允许=0,offset必须是f.tell()的返回值或者0

os中的文件I/O

  1. os.access(path, mode) #检验权限模式
  2. os.rename(oldname, newname) #重命名文件
  3. os.remove(filename) #删除文件
  4. os.mkdir(newdir) #在当前目录创建目录
  5. os.rmdir(dir) #删除目录,目录下的文件必须已清除。
  6. os.chdir(newdir) #改变当前工作目录
  7. os.getcwd() #获取当前工作目录
  8. os.getcwdu() #返回一个当前工作目录的Unicode对象
  9. os.chflags(path, flags) #设置路径的标记为数字标记
  10. os.lchflags(path, flags) #设置路径的标记为数字标记,类似chflags(),但是没有软链接
  11. os.chmod(path, mode) #更改权限
  12. os.chown(fd, uid, gid) #更改文件所有者,用户ID和用户组ID
  13. os.chroot(path) #改变当前进程的根目录
  14. os.close(fd) #关闭文件描述符 fd
  15. os.closerange(fd_low, fd_high) #关闭所有文件描述符,[fd_low,fd_high), 错误会忽略
  16. os.dup(fd) #复制文件描述符 fd
  17. os.dup2(fd, fd2) #将一个文件描述符 fd 复制到另一个 fd2
  18. os.fchdir(fd) #通过文件描述符改变当前工作目录
  19. os.fchmod(fd, mode) #改变fd文件的访问权限
  20. os.fchown(fd, uid, gid)
  21. os.fdatasync(fd) #强制将文件fd写入磁盘,不强制更新文件的状态信息
  22. os.fdopen(fd, mode, bufsize) #通过文件描述符 fd 创建一个文件对象,并返回这个文件对象
  23. os.fpathconf(fd, name) #返回文件的系统配置信息
  24. #name为检索的系统配置的值,
  25. #在很多标准中指定(POSIX.1, Unix 95, Unix 98, 和其它)
  26. os.fstat(fd) #返回文件描述符fd的状态
  27. os.fstatvfs(fd) #返回包含文件描述符fd的文件的文件系统的信息
  28. os.fsync(fd) #强制将文件描述符为fd的文件写入硬盘。
  29. os.ftruncate(fd, length) #裁剪文件描述符fd对应的文件, 所以它最大不能超过文件大小。
  30. os.isatty(fd) #如果文件描述符fd是打开的,同时与tty(-like)设备相连,则返回true, 否则False。
  31. os.lchmod(path, mode)修改连接文件权限
  32. os.lchown(path, uid, gid) 更改文件所有者,类似 chown,但是不追踪链接。
  33. os.link(src, dst) 创建硬链接,名为参数 dst,指向参数 src
  34. os.listdir(path) 返回path指定的文件夹包含的文件或文件夹的名字的列表。
  35. os.lseek(fd, pos, how)
  36. 设置文件描述符 fd当前位置为pos, how方式修改:
  37. SEEK_SET 或者 0 设置从文件开始的计算的pos;
  38. SEEK_CUR或者 1 则从当前位置计算; os.SEEK_END或者2则从文件尾部开始.
  39. unixWindows中有效
  40. os.lstat(path) stat(),但是没有软链接
  41. os.major(device) 从原始的设备号中提取设备major号码 (使用stat中的st_dev或者st_rdev field)。
  42. os.makedev(major, minor) majorminor设备号组成一个原始设备号
  43. os.makedirs(path[, mode]) 递归文件夹创建函数。像mkdir(), 但创建的所有intermediate-level文件夹需要包含子文件夹。
  44. os.minor(device) 从原始的设备号中提取设备minor号码 (使用stat中的st_dev或者st_rdev field )。
  45. os.mkdir(path[, mode]) 以数字modemode创建一个名为path的文件夹.默认的 mode 0777 (八进制)。
  46. os.mkfifo(path[, mode]) 创建命名管道,mode 为数字,默认为 0666 (八进制)
  47. os.mknod(filename[, mode=0600, device]) 创建一个名为filename文件系统节点(文件,设备特别文件或者命名pipe)。
  48. os.open(file, flags[, mode]) 打开一个文件,并且设置需要的打开选项,mode参数是可选的
  49. os.openpty() 打开一个新的伪终端对。返回 pty tty的文件描述符。
  50. os.pathconf(path, name) 返回相关文件的系统配置信息。
  51. os.pipe() 创建一个管道. 返回一对文件描述符(r, w) 分别为读和写
  52. os.popen(command[, mode[, bufsize]]) 从一个 command 打开一个管道
  53. os.read(fd, n)
  54. 从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。
  55. os.readlink(path) 返回软链接所指向的文件
  56. os.remove(path) 删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory
  57. os.removedirs(path) 递归删除目录。
  58. os.rename(src, dst) 重命名文件或目录,从 src dst
  59. os.renames(old, new) 递归地对目录进行更名,也可以对文件进行更名。
  60. os.rmdir(path) 删除path指定的空目录,如果目录非空,则抛出一个OSError异常。
  61. os.stat(path) 获取path指定的路径的信息,功能等同于C API中的stat()系统调用。
  62. os.stat_float_times([newvalue]) 决定stat_result是否以float对象显示时间戳
  63. os.statvfs(path) 获取指定路径的文件系统统计信息
  64. os.symlink(src, dst) 创建一个软链接
  65. os.tcgetpgrp(fd) 返回与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组
  66. os.tcsetpgrp(fd, pg) 设置与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组为pg
  67. os.tempnam([dir[, prefix]]) 返回唯一的路径名用于创建临时文件。
  68. os.tmpfile() 返回一个打开的模式为(w+b)的文件对象 .这文件对象没有文件夹入口,没有文件描述符,将会自动删除。
  69. os.tmpnam() 为创建一个临时文件返回一个唯一的路径
  70. os.ttyname(fd) 返回一个字符串,它表示与文件描述符fd 关联的终端设备。如果fd 没有与终端设备关联,则引发一个异常。
  71. os.unlink(path) 删除文件路径
  72. os.utime(path, times) 返回指定的path文件的访问和修改的时间。
  73. os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) 输出在文件夹中的文件名通过在树中游走,向上或者向下。
  74. os.write(fd, str) 写入字符串到文件描述符 fd中. 返回实际写入的字符串长度
  75. os.path 模块 获取文件的属性信息。