python 关于文件,以及文件夹的操作

Posted Yang-hao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 关于文件,以及文件夹的操作相关的知识,希望对你有一定的参考价值。

1.打开文件:

f=open(r‘E:PythonProjects est7a.txt‘,mode=‘rt‘,encoding=‘utf-8‘)

以上三个单引号内分别表示:要打开的文件的路径,mode为文件打开方式具体介绍在下文,encoding为文件的字符编码,一般默认为utf-8

2.读写文件:

data=f.read()  # 读文件

f.write()    # 写文件

3.关闭文件:

f.close()

4.为了简便,一般采用上下文的方法进行文件操作,可不用关闭文件

 

技术分享图片
1 with open(a.txt,mode=rt,encoding=utf-8) as f:
2     data=f.read()
3     print(data)
读文件

 

 

技术分享图片
with open(a.txt,mode=wt,encoding=utf-8) as f:
    f.write(hello world)
写文件

 

5.控制文件读写的操作:

r:(默认模式):只读:以该模式打开文件时,若文件不存在则报错,若文件存在,则文件指针在文件开头,即从文件开头开始读文件

w:只写:以该模式打开文件时,若文件不存在则创建一个文件,如文件存在,则清空文件内容,文件指针移到开头

a:追加写:以该模式打开文件时,若文件不存在则创建一个文件,如文件存在,则将文件指针移到文件末尾,在文件末尾写入新的内容

6.控制文件读写内容的模式:(t 和 b都不能单独使用,必须与r,w,a结合使用)

t:(默认):无论读写都是以字符为单位,只能识别文本文件,必须要制定encoding

b:无论读写都是以字节为单位,可以识别所有文件,一定不能指定encoding

7.文件的拷贝

with open (a.txt,mode=rb) as af,    open(b.txt,mode=wb) as bf:
    data=af.read
    f.write(data)  

执行程序后,打开文件,即可发现文件已成功拷贝,这里使用 b 而不是用 t 模式,是因为文件有多种格式

8.文件的修改:

文件的修改是在硬盘上实现文件的覆盖,相当于一个新的文件以旧的文件名来命名的; 文件的修改有俩种方式,分别适用于不同的情景

方式一(适用于容量小的文件):这种方式的原理是:创建一个新的文件,将旧文件的内容拷贝到新的文件中;这样内存里就存在俩个文件,故不适用于容量大的文件,具体代码见下方 View

技术分享图片
with open(a.txt,mode=rt,encoding=utf-8) as f:
    data=f.read()
    data_new=data.replace(yang, yv)
with open(b.txt,mode=wt,encoding=utf-8)as p:
    p.write(data_new)
View Code

方式二(适用于容量大的文件):此方式的原理为:读取旧文件的一行内容,修改后写到临时文件中,循环往复直到写完,然后将源文件删除,将临时文件命名为源文件名.这种方式在内存中只存在2行文件,节省内存,可用于大文件

技术分享图片
import os
with open(b.txt,mode=rt,encoding=utf-8) as f,     open(.b.txt.swap,mode=wt,encoding=utf-8) as p:
     for line in f:
         p.write(line.replace(yv,yang))  
        # 调用replace方法,将源文件中的‘yv‘,换成‘yang‘
os.remove(b.txt)
os.rename(.b.txt.swap,b.txt) 
View Code

9. 文件的阶段:truncate(n) 

将文件中n个字节后内容全删了,当 n 不存在时,即删除文件全部内容

10.文件内指针的移动

f.seek():  指针的移动是以字节为单位的

seek 有三种模式:

0:(默认模式) 指针在文件开头,只有在 0 模式可以在 t 模式下用,也可以在 b 模式下用,而 1 ,2 模式只能在 b 模式下使用

1:     指针在当前位置

2:     指针在文件末尾

以下为具体事例:

技术分享图片
# 0
with open(a.txt,mode=rt,encoding=utf-8)as f:
     f.seek(3,0)
     print(f.tell())  # 指针当前位置
     print(f.read())  # 从指针后读出所有内容

# 1  参照指针当前位置
 with open(a.txt,mode=rb)as f:
     f.read(2)
     f.seek(4,1)
     print(f.tell())
     print(f.read().decode(utf-8))

# 2   参照文件末尾
 with open(a.txt,mode=rb)as f:
     f.seek(-5,2)
     print(f.tell())
     print(f.read().decode(utf-8))
View Code

当 seek处于 2 模式时,可以将文件中新加入的内容打印出来,具体代码如下:

技术分享图片
 # 另一个文件进行写操作,写的代码如下:

with open(a.txt,mode=at,encoding=utf-8)as f:
     f.write(hello world
)


#  每在文件中写入新的内容,都打印出来,以下代码执行打印操作:
import time
with open(a.txt,mode=rb)as f:
    f.seek(0,2)
    while True:
        line=f.readline()  # readline 可以读取没有内容的部分
        # print(line.decode(‘utf-8‘))
        if len(line)==0:
            time.sleep(0.1)
        else:
            print(line.decode(utf-8))
View Code

 

 

 

 

 

 


以上是关于python 关于文件,以及文件夹的操作的主要内容,如果未能解决你的问题,请参考以下文章

关于在各浏览器中插入音频文件的html代码片段

python学习笔记-文件基本操作

我在哪里更改此 Python 代码片段以将临时文件保存在 tmp 文件夹中?

1.Python3关于文件的操作

关于python操作带有中文文件名报错的解决办法

学习python第一次应用---编写登录接口(关于whileiffor语句,dict以及文件的读写)