【Python File文件处理】

本文主要记录学习的python中文件处理部分,主要分为三个模块:Python文件I/O,文件的基础处理(包括打开、关闭、定位等)、利用OS模块进行文件/目录的处理。

一、Python 文件I/O

1、输出方式:print()函数
2、输入方式:input()函数

print("----输入和输出------")
str = input("请输入:")   #in
print("输入的内容是:",str)#out

结果如下 :
----输入和输出------
请输入:hello,friends
输入的内容是: hello,friends

二、文件的基础处理

1、打开和关闭文件

(1)open函数

Python中open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

先使用PYTHON内置的open()函数打开一个文件,创建一个file,即xx.txt文件,才能对文件进行读写处理。
注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。
open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。
常用的语法格式为:

open(file, mode='r')

常用的mode:
这里 ‘r’ 表示读取模式。其他常用的模式有:

  • ‘w’:写入模式,如果文件不存在则创建它,如果文件存在则覆盖它。
  • ‘a’:追加模式,如果文件不存在则创建它,如果文件存在则在末尾追加内容。
  • ‘r+’:读写模式,文件必须存在。
  • ‘w+’:写读模式,如果文件不存在则创建它,如果文件存在则覆盖它。
  • ‘a+’:追加读模式,如果文件不存在则创建它,如果文件存在则在末尾追加内容。

完整的语法格式:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:
在这里插入图片描述
mode的参数有:(默认为文本模式,如果要以二进制模式打开,加上 b 。)
在这里插入图片描述
(2) close()函数

close()刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。

当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。最好养成用 close()方法关闭文件。

使用 with 语句关闭文件
为了确保文件在使用完毕后被正确关闭,可以使用 with 语句。这样就不需要显式地调用 close() 方法了:

# read()
print("----使用close()的两种方式-----")
file = open('filename.txt', 'r')
content = file.read()  # 读取整个文件内容
print(content)
file.close()  # 读取完毕后记得关闭文件
print ("第一种是否已关闭 : ", file.closed)

with open('filename.txt', 'r') as file:
    content = file.read()
    print(content)
# 文件在这里会自动关闭
print ("第二种是否已关闭 : ", file.closed)

# write()
file = open('filename.txt', 'w')
file.write('moon')
file = open('filename.txt', 'r')
content = file.read()  # 读取整个文件内容
print(content)
file.close()  # 读取完毕后记得关闭文件
print ("是否已关闭 : ", file.closed)

结果如下:
----使用close()的两种方式-----
sun
第一种是否已关闭 :  True
sun
第二种是否已关闭 :  True
moon
是否已关闭 :  True


(3) File对象的属性
当一个文件被打开后,则有一个file对象,我们可以得到此文件的各种信息。
主要包括file.name、file.mode、file.closed

print("----file对象属性-----")
dem = open("demo.txt", "w")#打开文件,w是写模式
print ("文件名: ", dem.name)
print ("是否已关闭 : ", dem.closed)
print ("访问模式 : ", dem.mode)
dem.close()# 关闭打开的文件
print ("是否已关闭 : ", dem.closed)

输出结果如下:
----file对象属性-----
文件名:  demo.txt
是否已关闭 :  False
访问模式 :  w
是否已关闭 :  True

2、file对象常用的函数

使用open()函数来创建file对象,file对象常用的函数有:
在这里插入图片描述

(1)file 读写
格式如下:

fileObject.write(string)

fileObject.read([count])#count为读取字节数,若不传入,则默认读取全部

详细请参考:python中.txt文件的使用【txt读取和写入】
简单示例:


file = open('file1.txt', 'w')
file.write('你好\n 朋友! ')
file.close()  
file = open('file1.txt', 'r')
content = file.read()  # 读取整个文件内容
print(content)
file.close()  

结果如下:
你好
 朋友! 

(2)文件定位
格式如下:

fileObject.tell()
#定位文件内字节的当前位置, 即,下一次的读写会发生在文件开头这么多字节之后。

fileObject.seek(offset [,from]#改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。from:有三种模式,0、1、2

示例如下:

print("----file定位-----")
# 打开一个文件
dem = open("demo.txt", "r+")
str = dem.read(10)
print("读取的字符串是str: ", str)

# 查找当前位置
position = dem.tell() #tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。
print("当前文件位置 : ", position)
str1 = dem.read() # 下一次的读写会发生在文件开头这么多字节之后。
print("下次读取的字符串是str1 : ", str1)

# 把指针再次重新定位到文件开头 seek(offset [,from])
position = dem.seek(0, 0) #from设为0,着将文件的开头作为移动字节的参考位置。
#position = dem.seek(0, 1) # from设为1,则使用当前的位置作为参考位置。
#position = dem.seek(0, 2) #from设为2,则该文件的末尾将作为参考位置。
str = dem.read()
print("重新读取字符串 : ", str)
# 关闭打开的文件
dem.close()

结果如下:

----file定位-----
读取的字符串是str:  hello,boy,
当前文件位置 :  11
下次读取的字符串是str1 :  sunshine

重新读取字符串 :  hello,boy,sunshine

三、利用OS模块进行文件/目录的处理

要使用os模块,先进行导入该模块,利用dir()查询该模块的函数。
如下所示:

>>> import os
>>> dir(os)
['DirEntry', 'EX_OK', 'F_OK', 'GenericAlias', 'Mapping', 'MutableMapping', 
'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 
'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 
'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 
'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 
'TMP_MAX', 'W_OK', 'X_OK', '_AddedDllDirectory', '_Environ', '__all__', 
'__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__',
 '__spec__', '_check_methods', '_execvpe', '_exists', '_exit', '_fspath', 
 '_get_exports_list', '_wrap_close', 'abc', 'abort', 'access',
  'add_dll_directory', 'altsep', 'chdir', 'chmod', 'close', 'closerange',
   'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup',
    'dup2', 'environ', 'error', 'execl', 'execle', 'execlp', 'execlpe', 
    'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 
    'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_blocking', 
    'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 
    'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 
    'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'listdrives', 
    'listmounts', 'listvolumes', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name',
     'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 
     'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir',
      'scandir', 'sep', 'set_blocking', 'set_handle_inheritable', 'set_inheritable',
       'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_result', 
       'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 
       'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink',
        'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask',
        'uname_result', 'unlink', 'unsetenv', 'urandom', 'utime', 'waitpid', 
        'waitstatus_to_exitcode', 'walk', 'write']
>>>

以下仅举例常用的函数。

1、重命名和删除文件

格式如下:

os.rename(current_file_name, new_file_name)#重命名

os.remove(file_name)#删除文件

示例如下:

import os
os.renames("file1.txt","file2.txt")# file1被重命名为file2。

file2 = open('file2.txt', 'r')
content2 = file2.read()  # 读取整个文件内容
print(content2)
file2.close()

结果如下:file1被file2代替,这是已经不存在文件file1.txt
在这里插入图片描述

import os

file2 = open('file2.txt', 'r')
content2 = file2.read()  # 读取整个文件内容
print(content2)
file2.close()
os.remove("file2.txt")

结果:
file2.txt已经被删除。相应路径下已无此文件。

2、利用os模块处理目录

文件包含在各个不同的目录之下,OS模块有很多方式可以轻松创建、删除和更改目录。
常用方式:

os.mkdir("newdir")#在当前目录下创建新目录,提供新目录的名字

os.chdir("newdir")#改变当前的目录,提供新目录名字

os.getcwd() # 显示当前的工作目录

具体函数使用,请参考:Python OS 模块函数说明

相关推荐

  1. pythonGIL

    2024-03-31 00:20:03       19 阅读
  2. VUE: 处理 PDF文件

    2024-03-31 00:20:03       62 阅读
  3. OpenCV处理视频文件

    2024-03-31 00:20:03       36 阅读
  4. C#处理文件

    2024-03-31 00:20:03       19 阅读
  5. 文件处理函数

    2024-03-31 00:20:03       21 阅读
  6. 【Python基础】文件处理

    2024-03-31 00:20:03       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-31 00:20:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-31 00:20:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-31 00:20:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-31 00:20:03       18 阅读

热门阅读

  1. Linux IRC

    Linux IRC

    2024-03-31 00:20:03      20 阅读
  2. 工作日志- 不定期更新

    2024-03-31 00:20:03       19 阅读
  3. P19:注释

    2024-03-31 00:20:03       19 阅读
  4. 实现元素水平垂直居中的方法

    2024-03-31 00:20:03       22 阅读
  5. SpringBoot -- 错误处理机制

    2024-03-31 00:20:03       19 阅读
  6. vue3从精通到入门1: vue3特点以及与vue2的区别

    2024-03-31 00:20:03       19 阅读
  7. 面试宝典:深入分析golang 的反射(reflect)

    2024-03-31 00:20:03       18 阅读
  8. 深入Python元编程:从基础到实践

    2024-03-31 00:20:03       15 阅读
  9. 面试题库二

    2024-03-31 00:20:03       17 阅读
  10. 蓝桥杯刷题记录之蓝桥王国

    2024-03-31 00:20:03       21 阅读
  11. C/C++ ② —— C++11智能指针

    2024-03-31 00:20:03       17 阅读
  12. 【前端学习——css篇】3.隐藏元素的方法

    2024-03-31 00:20:03       13 阅读