美文网首页
python中的文件、目录操作

python中的文件、目录操作

作者: ZzzZBbbB | 来源:发表于2019-03-11 16:48 被阅读0次

在编写代码的过程中,如果存在读取,写入等操作的时候,就免不了与open函数、os库打交道,最近使用pandas有点勤,其中也用了不少的os函数,所以在这里做个总结:

  • 关于open的使用open(name[, mode[, buffering]])
    首先需要了解一点,在现代操作系统,不允许普通的程序直接操作磁盘,所以就有了文件对象(文件描述符)的产生,而open函数是python内置的函数,不需要import module

    文件操作:读文件、写文件、关闭文件、偷懒的with
    1.读文件(文件读到内存中)

    f = open('/Users/Sonder/test.txt', 'r') `
    #读取非utf-8文件使用encoding关键字参数
    f = open('/Users/Sonder/gbk.txt', 'r', encoding='gbk')
    #文件中存在编码不规范的情况(乱码) ,使用errors关键字参数
    f = open('/Users/Sonder/gbk.txt', 'r', encoding='gbk', errors='ignore')
    
    f.read()   read(size)    #如果文件过大 可以使用size
    f.readline()      
    f.readlines()
    如果使用read多次,那么后面读取的数据是从上次读完后的位置开始的
    
    例如:
    f = open('hello.txt', 'r')  #假设txt文本中只有一行字 hello world,I am Sonder!
    content = f.read(5)
    print(content)
    print('*'*10)
    content = f.read()
    print(content)
    f.close()
    
    >>> 
    hello 
    **********
    world,I am Sonder!
    

    2.写文件 mode r-->w

    f = open('/Users/Sonder/test.txt','w')
    f.write('Hello, world!')
    

    注意,写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。

    3.关闭文件
    f.close()
    文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的,可以使用try ... finally保证无论是否出错都能正确地关闭文件。

    4.使用with关键字规避异常(with可以自动调用close方法)

    with open('/path/file_name', 'r') as f:
      print(f.read())
    

    5.文件操作还包括有获取文件读写的位置tell(),定位到某个位置seek(offset, from),不过自己目前都不太常用,记住有这些操作就行。

另外文件的读写mode不止有r和w,还包括有ba+,只要记住b是二进制,+是读写均可,a是追加,等到用的时候合理使用即可。


  • 关于os库的使用
    第一步,导入os库 import os

    os的常用操作:
    1.查看当前目录 os.getcwd() 插一句,在 jupyter notebok cell中直接输入pwd效果一样
    2.创建目录 mkdir & makedirs

    os.mkdir('/Users/Sonder/a')
    os.makedirs('/Users/Sonder/a')
    #os.makedirs会递归的建立输入的路径,即使是上层的路径不存在,
    #它也会建立这个路径,而os.mkdir父级路径不存在,那么就会报错。
    #而且mkdir不能创建已经存在的目录,而makedirs可以通过exist_ok关键字参数
    #设置exist_ok=True表示若目录存在着不抛出任何错误
    

    2.(常用)获取目录下的文件名 os.path.listdir(folder_name)
    3.(常用)目录的拼接os.path.join(folder_name1,folder_name2,...)
    把多个路径合成一个时,不要直接拼字符串的拼接(虽然效果一样),而要通过 os.path.join() 函数,这样可以正确处理不同操作系统的路径分隔符,或者一定使用字符串的拼接也可以,不过不要简单粗暴的使用folder_name1 + '/' + folder_name2,可以尝试用下面这种方法folder_name1 + os.sep + folder_name2, os.sep表示该操作系统的分隔符。
    4.一个完整路径下的文件名称获取os.path.basename(file_path)
    5.删除文件 os.remove(file_path)

一般情况下防止异常会这么写:
if os.path.exists('hello_world.txt'):
   os.remove('hello_world.txt')

目前自己用到的就以上这些,如果之后遇到常用的再进行补充,自己常常结合2、3操作获取一个文件夹下所有文件绝对路径的获取,代码如下:

import os
files_set = os.path.listdir(folder_name)
files_abs_path_set = []
for i in range(len(files_set)):
  files_abs_path_set.append(os.path.join(folder_name,files_set[i]))

更简单的写法如下:
import os 
files_abs_path_set = os.path.listdir(folder_name)
files_abs_path_set = [ os.path.join(folder_name,i) for i in files_abs_path_set ]
#使用list comprehension 

~~~~~
比满足别人期待更重要的是,满足自己的期待。
~~~~~

相关文章

  • Python:处理文件\文件夹的各种操作命令汇总

    1. python 中对文件、文件夹的操作 得到当前工作目录,即当前Python脚本工作的目录路径 返回指定目录下...

  • python中的文件、目录操作

    在编写代码的过程中,如果存在读取,写入等操作的时候,就免不了与open函数、os库打交道,最近使用pandas有点...

  • python的读写 ,创建 ,文件

    python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前...

  • 关于python文件操作

    python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前...

  • python 文件操作函数

    python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前...

  • python os模块总结

    python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前...

  • python 文件操作

    python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前...

  • python读写、创建文件、文件夹等等

    python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前...

  • 2020-08-20 python 读写、创建 文件

    python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前...

  • python读写、创建文件、文件夹等等

    python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前...

网友评论

      本文标题:python中的文件、目录操作

      本文链接:https://www.haomeiwen.com/subject/nzrbpqtx.html