`
您已经登录
  • 浏览: 43507 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

python文件处理:file对象,tempfile,shuitl,os.path,os

 
阅读更多

File descriptor(文件描述符)

fd文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。

一,File对象
python的文件对象File类是实现C的stdio包,并且可以通过内建方法open()来创建(同样可以使用内建方法file()来创建)。当文件操作引发错误时会抛出IOError。
 
1 类的方法
      1.1 close():关闭文件流操作。当文件被关闭后就不能对其进行读写操作,如果依然进行的话会引发ValueError。close()可多次调用。
      1.2 fulsh():冲刷内部缓存区。并不是一个必须的操作。
      1.3 fileno():以数字形式返回“文件描述符”(file descriptor)。
      1.4 isatty():文件是否是一个终端设备文件。
      1.5 next():返回下一行内容,并把操作标记置于下行开头。如 for line in file: print line 就是调用了next()方法。
      1.6 read([size]):无参数或size是负数时,从文件中读取所有数据直到EOF,size为正数时从文件中读取size个byte。
      1.7 readline([size]):无参数时,读取一行。size为正数时从文件中读取size个byte。
      1.8 readlines([sizehint]):把文件中的每一行最为一个列表的元素,返回这个列表。
      1.9 seek(offset[, whence]):将文件的操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0(os.SEEK_SET)表示从头开始计算(默认为0),1(os.SEEK_CUR)表示以当前位置为原点计算。2(os.SEEK_END)表示以文件末尾为原点进行计算。
      1.10 tell():返回相对于开头记为0的文件当前的位置。
      1.11 truncate([size]):裁剪文件的大小,如果size比文件本身还大,那根据不同的文件系统而定。size是byte。
      1.12 write(str):写入文件内容。
      1.13 writelines(sequence):写入文件内容,sequence是所有包含string信息的sequence。
 
2 类的属性
      2.1 closed:标记文件是否已经关闭,由close()改写此标记
      2.2 encoding:文件编码
      2.3 error:随着encoding使用的编码错误处理
      2.4 mode:打开模式
      2.5 name:文件名
      2.6 newlines:文件中用到的换行模式
 
文件的mode含义:
主要三种mode:r(只读),w(只覆盖写),a(只追加写)。这三种mode之间不能结合使用,而b和+需要配合前三种mode使用,不能独立使用。
添加‘b’到mode参数中,将对文件以二进制形式操作。添加‘+’到mode参数中,将允许对文件同时进行读写操作。
mode值
mode含义
r
以只读方式打开文件,写文件和文件不存在时会抛出IOError。
w
以只写方式打开文件,读文件时会抛出IOError。
文件不存在会创建文件,文件存在时写入会把原有内容覆盖。
a
以追加写方式打开文件,读文件时会抛出IOError。
文件不存在会创建文件,文件存在时写入追加到文件末尾。
r+
以读写方式打开文件,文件不存在会抛出IOError。
文件存在时写入会把原有内容覆盖。
w+
以读写方式打开文件,可以读取文件信息。
文件不存在会创建文件,文件存在时写入会把原有内容覆盖。
a+
以追加读写方式打开文件,可以读取文件信息。
文件不存在会创建文件, 文件存在时写入追加到文件末尾 。
rb/rb+
与r/r+类似,只是文件以二进制形式打开。
wb/wb+
与w/w+类似,只是文件以二进制形式打开。
ab/ab+
与a/a+类似,只是文件以二进制形式打开。
 
二,tempfile
用于创建临时文件和目录。其他程序无法找到和打开这个临时文件,关闭后会自动删除。
 
模块的函数:
      1 TemporaryFile([mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None]]]]]) :返回一个类似于file的对象。当这个返回的对象调用close()方法后这个临时文件就会消失。mode默认是可读写二进制打开,如果要换成文本类型打开可以使用w+t
tmepf = tempfile.TemporaryFile()
tmepf.writelines(('ni\n', 'hao\n'))
tmepf.seek(0)
print tmepf.readline()
print tmepf.name
      2 NamedTemporaryFile([mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None[, delete=True]]]]]]):与TemporaryFile()函数一样,只是可函数返回的类file对象可以通过其名字被其他程序访问
      3 SpooledTemporaryFile([max_size=0[, mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None]]]]]]):TemporaryFile()函数一样,只是这个临时文件内容保存在内存中直到其大小超过max_size。
      4 mkstemp([suffix=''[, prefix='tmp'[, dir=None[, text=False]]]]):创建一个临时文件,返回一个二元元组,第一个元素是操作临时文件的安全级别(os-level handle),第二个元素是临时文件的全路径。参数suffix和prefix分别表示临时文件名称的后缀和前缀;dir指定了临时文件所在的目录,如果没有指定目录,将根据系统环境变量TMPDIRTEMP或者TMP的设置来保存临时文件;参数text指定了是否以文本的形式来操作文件,默认为False,表示以二进制的形式来操作文件。TemporaryFile不同,需要用户自己删除这个临时文件。
fd, filename = tempfile.mkstemp()
print fd, filename
os.close(fd)
os.remove(filename)
      5 mkdtemp([suffix=''[, prefix='tmp'[, dir=None]]]):创建临时目录,也需要用户自己删除这个临时目录
      6 gettempdir():返回存放临时文件的目录。
模块属性:
      1 tempdir:返回存放临时文件的目录。如果没有设置该属性或者将其设为None,Python将返回以下环境变量TMPDIR, TEMP, TEMP指定的目录,如果没有定义这些环境变量,临时文件将被创建在当前工作目录。
 
三,shutil
此模块提供文件集的一些高级操作。
 
1 目录和文件操作
      1.1 copyfileobj(fsrcfdst[, length]):将目标类文件对象fsrc拷贝到目的类文件对象fdst。当给定length时则表示指定buffer的size。fsrc必须具有读模式,fdst必须具有写模式或追缴模式。
      1.2 copyfile(src, dst):把目标文件源src拷贝到目标文件源dst,如果dst已经存在就覆盖。如果src和dst是同一文件会抛出异常,dst必须有写权限。
      1.3 copymode(src, dst):把权限位从src拷贝到det。
      1.4 copystat(src, dst):拷贝权限位,最后访问时间和修改时间。
     1.5 copy(src, dst):把文件src拷贝到文件dst或者目录dst中。权限位会被拷贝。如果dst为目录则把文件拷贝到dst目录中,如果存在src同名文件就覆盖之。
      1.6 copy2(src, dst):类似于 cp -p命令。是copy +  copystat,在拷贝文件内容的同时拷贝最后访问时间和修改时间。
      1.7 copytree(src, dst, symlinks=False, ignore=None):把src递归拷贝到dst,如果symlinks是True,则复制目录时将保持文件夹下的符号连接,如果symlinks是False,则将在复制的目录下生成物理副本来替代符号连接。src和dst必须为目录,且dst必须不存在。
      1.8 rmtree(path[, ignore_errors[, onerror]]):删除整个目录树。
      1.9 move(src, dst):递归移动一个文件或者一个目录(src)到目标文件或目录dst,类似于剪切。dst如为文件当src文件和dst文件同名时覆盖dst文件;dst如为目录必须不存在。
 
2 归档操作
      2.1 make_archive(base_name, format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]]):创建一个归档文件(如zip和tar),并返回其名字。
base_name是生产的归档文件的全路径及名字,format是归档格式,如zip,tar,bztar,gztar;root_dir是归档文件的跟目录;base_dir是归档文件的来源,root_dir和base_dir的默认目录都是当前目录。
      2.2 get_archive_formats():返回一个系统所支持的归档类型的列表,其中元素为简称和说明的元组。
      2.3 register_archive_format(namefunction[, extra_args[, description]]):注册一个新的归档类型。
      2.4 unregister_archive_format(name):注销一个归档类型。
 
四,os.path
此模块实现了对路径名称很有用的函数。
 
模块的函数
      1. abspath(path):返回path的绝对路径。
import os.path as op
print op.abspath(r"./")
      2. basename(paht):返回path的文件名。
      3. dirname(path):返回path的目录名。
      4. exists(path):判断某个目录或文件是否存在,True为存在。
      5. lexists(path):如果 path 与一个已存在的路径关联返回 True 。对于损坏的连接返回 True 。在一些缺少 os.lstat()的平台上相当于exists()。
      6. expanduser(path):把~和~user的path换成用户的home目录。
      7. expandvars(path):环境变量值替换path内的变量,linux中以$name和${name}表示,Windows中是以%name%表示。
      8. getatime(path):返回最后一次进入该path的时间戳。
      9. getmtime(path):返回最后一次在该path下修改的时间戳。
      10. getctime(path):返回该path对应的文件或目录的创建时间戳。(Unix上是最后一次修改时间)。
      11. getsize(path):文件大小,目录大小是固定的,单位字节。
      12. isabs(path):是否是绝对路径。
      13. isfile(path):是否为文件。
      14. isdir(path):是否为目录。
      15. islink(paht):是否为连接。
      16. ismount(path):是否为挂载点。
      17. join(path1[, path2[, ...]]):合成路径,形成新目录或文件。
      18. normcase(path):转换目录内的大小写,斜杠等特殊符号。
      19. normpath(path):规范的path字符串形式。
      20. realpath(path):如果是相对路径,则返回当前目录下的绝对路径(os.curdir)。
      21. samefile(path1, path2):判断两个目录或文件是否是同一个,适用于Unix。
      22. split(path):返回包含目录和文件名的元组。
      23. splitdrive(path):用于Windows下,将驱动器(如C盘,C:)与之后的路径分开。
      24. splitext(path):分割路径,返回文件名和扩展文件名的元组。
      25. splitunc(path):分割加载点和文件。
      26. walk(path, visit, arg):遍历path,进入每个目录都调用visit函数,visit函数必须有3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有文件名,args则为walk的第三个参数。
 
五,在os模块中的部分文件操作
File descriptor的相关操作(fd)
     1.1 close(fd):关闭fd对应的文件对象。
      1.2 dup(fd):返回一个fd的副本。
      1.3 fsync(fd):将fd所指向的文件对象刷新如硬盘。
      1.4 open(file, flag[, mode]):打开一个文件对象并返回fd。
flag含义(Windows和Unix都能用的,其他的并未给出,请参考python的具体文档):
os.O_RDONLY
以只读的方式打开 Read only
os.O_WRONLY
以只写的方式打开 Write only
os.O_RDWR
以读写的方式打开 Read and write
os.O_APPEND
以追加的方式打开 
os.O_CREAT
创建并打开一个新文件
os.O_EXCL
os.O_CREAT| os.O_EXCL 如果指定的文件存在,返回错误
os.O_TRUNC
打开一个文件并截断它的长度为零(必须有写权限)
     1.5 read(fd, n):读取fd所对应的文件,n为读取的最多字节数。
      1.6 write(fd, str):对fd所对应的文件对象进行写入,内容为str。
      1.7 lseek(fdposhow):将fd所对应的文件的操作标记移到pos的位置。这个pos一般是相对于文件的开头来计算的,一般为正数。但如果提供了how参数就不一定了,how可以为0(os.SEEK_SET)表示从头开始计算(默认为0),1(os.SEEK_CUR)表示以当前位置为原点计算。2(os.SEEK_END)表示以文件末尾为原点进行计算。
      1.8 fdopen(fd[, mode[, bufsize]]):返回一个fd对应的文件对象。和内建函数open类似。
 
2 另外一些文件操作
      2.1 sep:当前操作系统的路径分割符。
      2.2 name:当前的操作系统。
      2.3 linesep:当前操作系统的行换行符。
      2.4 listdir(path):返回指定path下的所有文件和目录名称列表。
      2.5 getcwd():返回当前的目录字符串。
      2.6 remove(path):删除一个文件,如果是目录就会抛出OSError。
      2.7 removedirs(path):只能删除目录,会试图删除path目录上的每个节点(每个空目录),知道有OSError为止。
      2.7 rmdir(path):只能删除空目录,删除非空文件shuitl.rmtree。
      2.8 rename(src, dst):把文件或目录重命名。
      2.9 stat(path):获得文件或目录的属性。
      2.10 mkdir(path[, mode]):创建一个名为path的目录,mode为Unix系统中文件的数字化权限,默认值为0777。
      2.11 makedirs(path[, mode]):递归创建多层目录。
      
分享到:
评论

相关推荐

    Windows删除无线嵌套文件夹或错误路径文件

    def delete_folder(path): if os.path.exists(path): for file in os.listdir(path): file_path = os.path.join(path,file) if os.path.isdir(file_path): delete_folder(file_path) else: os.remove(file_path) ...

    python os模块.pdf

    除了os模块外,Python还提供了其他模块,如shutil、tempfile等,这些模块提供了更多高级的文件操作功能,用于处理文件的复制、移动、压缩、临时文件管理等任务。通过组合这些模块的功能,Python开发者可以构建强大的...

    Python_OS模块

    temp = os.path.splitext(file)[0] + ".tmp" try: # remove old temp file, if any os.remove(temp) except os.error: pass fi = open(file) fo = open(temp, "w") for s in fi.readlines(): fo....

    python os.path模块常用方法实例详解

    8. os.path.isfile(path):检查给定路径是否是存在的文件,返回布尔值。 - 示例: - os.path.isfile('c:\\boot.ini') 返回 True - os.path.isfile('c:\\csv\\test.csv') 返回 False 9. os.path.isdir(path):...

    PYTHONOS模块中文帮助文档.pdf

    4. 创建临时文件和文件夹:使用tempfile模块。 5. 高级文件和文件夹处理:使用shutil模块。 四、注意事项 1. 在某些平台上,修改environ会导致内存泄露。 2. putenv()函数不会直接改变os.environ,建议直接修改...

    python csv拆分_workgy8_文件拆分_python_

    temp_file = open(os.path.join(output_dir, f'split_{row_count}.csv'), 'w', newline='') writer = csv.writer(temp_file) if next(reader, None): # 如果有表头,写入表头 writer.writerow(next(reader)) ...

    python常用技巧之文件操作(csdn)————程序.pdf

    - `os.path.isdir(path)` 和 `os.path.isfile(path)`:分别检查路径是否为目录或文件。 - `os.path.basename(path)`:获取路径的最后一部分,即文件名或目录名。 - `os.path.split(path)`:将路径分解为目录和...

    python常用模块.pdf

    1. 文件和文件夹操作:os 模块提供了多种文件和文件夹操作的方法,如 open()、os.path、fileinput、tempfile、shutil 等。 2. 环境变量操作:os.environ 是一个 mapping 对象,表示环境变量。可以通过 os.environ ...

    PYTHONOS模块中文帮助文档[总结].pdf

    1. 文件和目录操作:os模块提供了多种函数来处理文件和目录,例如open()、os.path、fileinput、tempfile和shutil等。 2. 进程和用户操作:os模块提供了多种函数来处理进程和用户相关的操作,例如os.getpid()、os....

    第10章 文件与文件夹操作.pptx

    文件与文件夹操作是计算机操作系统中最基本的操作之一,在 Python 中,我们可以使用 os 和 os.path 模块来实现文件和文件夹的操作。 os 模块方法功能说明: 1. chdir(path):把 path 设为当前工作目录。 2. curdir...

    python对操作系统的目录和文件操作

    类似地,我们也可以通过`os.path.isfile(path)`来判断给定路径是否为文件: ```python import os print(os.path.isfile('E://book//temp')) ``` 如果`E://book//temp`不是一个文件而是目录或其他类型,则输出结果...

    python-os模块中文帮助文档.pdf

    对于更复杂的文件和文件夹处理,推荐使用`tempfile`和`shutil`模块。 `os.error`是内置的`OSError`异常的别名,当os模块的函数遇到错误时,通常会抛出这个异常。`os.name`则用来获取当前运行的Python解释器所依赖的...

    python中os模块中文帮助文档.doc

    除此之外,os模块还引入了其他一些模块,如os.path用于处理文件路径,fileinput用于读取多个文件的每一行,tempfile用于创建临时文件和目录,shutil提供了更高级的文件和目录操作。这些模块协同工作,构建了一个强大...

    Python 如何测试文件是否存在

    如果文件是符号链接,可以使用`os.path.realpath()`来获取链接指向的实际文件或目录的路径: ```python # 获取符号链接的实际路径 actual_path = os.path.realpath('/path/to/symlink') print('实际路径:', actual_...

    python对指定目录下文件进行批量重命名的方法

    本文实例讲述了python对指定目录下文件进行批量重命名的方法。... if os.path.isfile(os.path.join(path,file))==True: newname = file.replace("scroll_1", "scroll_00") os.rename(os.path.join(path,f

    python获取文件扩展名的方法

    - **`os.path.isdir()`** 和 **`os.path.isfile()`**:分别用于判断指定路径是否为目录或文件。 例如: ```python path = 'C:\\py\\wxPython.gif' print(os.path.basename(path)) # 输出:wxPython.gif print(os....

    基于问题解决的Python应用探讨——以Python批处理Excel文件为例.zip

    df_temp = pd.read_excel(os.path.join(folder_path, file)) # 对每个文件执行处理操作,如合并、过滤等 ``` 批处理的核心在于如何处理这些DataFrame。可能的操作包括数据清洗(去除空值、异常值)、数据转换...

    os 组件学习笔记1

    举例:save_file_name = os.path.join('temp','temp_spam_data.csv') 返回:字符串temp\temp_sp

    Python库 | cdktf-cdktf-provider-external-0.1.228.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:cdktf-cdktf-provider-external-0.1.228.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

Global site tag (gtag.js) - Google Analytics