Skip to content

Latest commit

 

History

History
327 lines (182 loc) · 7.96 KB

File metadata and controls

327 lines (182 loc) · 7.96 KB

第18节 python文件处理

❤️💕💕python是一种动态的解释形语言,由于python的普遍性,学会python能更快的解决问题,以及学习其他的知识。Myblog:http://nsddd.top


[TOC]

文件处理

文件处理几乎是所有编程语言都非常重要的一个环节,学会文件处理能解决我们生活中很多的问题。

Python 有几个函数用于创建、读取、更新和删除文件。

函数介绍

在 Python 中处理文件的关键函数是 open()函数。

open()函数有两个参数; 文件名模式

打开文件有四种不同的方法(模式):

"r"- 读取 - 默认值。打开文件进行读取,如果文件不存在则出错

"a"- Append - 打开一个文件进行追加,如果文件不存在则创建该文件

"w"- 写入 - 打开文件进行写入,如果文件不存在则创建文件

"x"- 创建 - 创建指定文件,如果文件存在则返回错误

此外,您可以指定文件是否应作为二进制或文本模式处理

"t"- 文本 - 默认值。文本模式

"b"- 二进制 - 二进制模式(例如图像)

默认读取文件

In [7]: ls                                                  
12306/                dist/           studentxj_TWY5CE.zip*
1撸代码形式学python/  pythonProject/  venv/
a.py                  socket/         游戏.spec
btp2p/                studentxj/
build/                studentxj2/

In [8]: open("a.py")                                        
Out[8]: <_io.TextIOWrapper name='a.py' mode='r' encoding='UTF-8'>

In [9]: !cat a.py                                           
from socket import *
# 要监听的端口号
serverPort = 8080
# AF_INEF指定了IPv4 SOCK_DGRAM指定了UDP协议
serverSocket = socket(AF_INEF,SOCK_DGRAM)
serverSocket.bind('',serverPort)
print "Ready..."
while True:
    message,clientAddress = serverPort.recvfrom(2048)
    modifiedMessage = message.upper() # 全部转为大写
    serverSocket.sendto(modifiedMessage, clientAddress)

上面的代码和下面的代码含义相同:

open("a.py","rt")

因为"r"for read 和 "t"for text 是默认值,所以不需要指定它们。

有一点需要注意,就是在ipython中如果要读取文件的话,要用print打印出来

read()读文件

In [30]: a = open("a.py","rt")                               

In [31]: a.read()   

image-20220920144842096

指定返回字符数

默认情况下,该read()方法返回整个文本,但您也可以指定要返回的字符数:

返回文件的前 5 个字符:

a = open("a.py","r")   
print(a.read(5))

image-20220920145005459

指定返回一行

a = open("a.py","r")
print(a.readline())

## 再返回一行
print(f.readline())

image-20220920145207637

遍历

In [39]: a = open("a.py","r") 
    ...: print(a.readline(3))                                
fro

In [40]: # 遍历文件                                          

In [41]: for x in a: 
    ...:     print(x) 
    ...:  

image-20220920145328506

关闭文件

打开了后关闭文件是一个好习惯

a.close()

文件写入

要写入现有文件,必须向 open()函数添加参数:

"a"- 追加 - 将追加到文件的末尾

"w"- 写入 - 将覆盖任何现有内容

为了方便测试,我们在ipython中新建了一个文件,并且管道导入hello word

In [42]: a.close()                                          

In [43]: ! echo "hello-word" >>  text.txt                                               

In [45]: a = open("text.txt","rt")                                                                                     
In [46]: a.read()                                                                                                      
Out[46]: 'hello-word\n'

我们追加:假如生活欺骗了你

n [45]: a = open("text.txt","rt")                                                                                     

In [46]: a.read()                                                                                                      
Out[46]: 'hello-word\n'

In [47]: a = open("text.txt","a")                           

In [48]: a.write("假如生活欺骗了你")                        
Out[48]: 8

In [49]: a.close()                                          

In [50]: a = open("text.txt","rt")                          

In [51]: a.read()                                           
Out[51]: 'hello-word\n假如生活欺骗了你'

或者我们可以覆盖掉以前的内容

In [53]: a = open("text.txt","w")                           

In [54]: a.write("假如生活欺骗了你")                        
Out[54]: 8

In [55]: a.close()                                          

In [56]: a = open("text.txt","r")                           

In [57]: a.read()                                           
Out[57]: '假如生活欺骗了你'

当然最后不要忘记了关闭文件!

创建一个新文件

要在 Python 中创建新文件,请使用open()带有以下参数之一的方法:

"x"- 创建 - 将创建一个文件,如果文件存在则返回错误

"a"- Append - 如果指定的文件不存在,将创建一个文件

"w"- 写入 - 如果指定的文件不存在,将创建一个文件

创建一个名为“myfile.txt”的文件:

f = open("myfile.txt", "x")

如果文件不存在,则创建一个新文件:

f = open("myfile.txt", "w")

删除文件

要删除文件,您必须导入 OS 模块,并运行其 os.remove()功能:

import os 

image-20220920150504230

为了避免错误,你需要在删除文件之前检查文件是否存在

os.path.exists("text.txt") 可以判断文件或者文件夹是否存在

In [62]: f = open("text.txt","x")                           

In [63]: ls text.txt                                        
text.txt

In [64]: if os.path.exists("text.txt"): 
    ...:     os.remove("text.txt") 
    ...: else: 
    ...:     print("这个文件不存在") 
    ...:                                                    

In [65]: os.path.exists("text.txt")                         
Out[65]: False

创建文件夹

os.mkdir创建文件夹

甚至可以创建多级文件夹,或许更加常用os.makedirs(path)

In [65]: os.path.exists("text.txt")                         
Out[65]: False

In [66]: os.mkdir("text")                                   

In [67]: !ls -al text/                                      
total 8
drwxr-xr-x  2 root root 4096 Sep 20 15:11 .
drwxr-xr-x 15 root root 4096 Sep 20 15:11 ..

删除文件夹

要删除整个文件夹,请使用以下os.rmdir()方法:

In [68]: os.rmdir("text/")                                  

In [69]: !ls -al text/                                      
ls: cannot access 'text/': No such file or directory

END 链接