Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save caoya171193579/8ed6da74229000a984ea70683dbc0b8d to your computer and use it in GitHub Desktop.
Save caoya171193579/8ed6da74229000a984ea70683dbc0b8d to your computer and use it in GitHub Desktop.
进阶
【文件的打开和创建】
【文件读取】
【文件写入】
【内容查找和替换】
【文件删除,复制,重定名】
【目录操作】
###########################################
python 文件读写:
进行文件读写的函数是open 或 file(类)
open : (read(): 查看 ,close():关闭。 关闭以后就整个文件关闭了。) #方法 定义一个变量wen = open('文件绝对路径')
>>> wen = open('/root/wenjian.txt')
>>>
>>> wen #变量就会返回一个我们所看文件的对象。
<open file '/root/wenjian.txt', mode 'r' at 0x7f3f64afe540>
>>>
>>> wen.read() #使用read()参数读取、 查看文件内的内容。
'192.168.1.108\n\na am tom\n\n123456\n'
>>>
>>> wen.close() #使用close()参数关闭文件,就不会再看的到了
>>>
>>> wen.read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file
>>>
###########################################
类后续还会再讲!!!
file: 类 (用法和open函数同样,read()打开,close()关闭)。
>>> wen = file('/root/wenjian.txt')
>>>
>>> wen.read()
'192.168.1.108\n\na am tom\n\n123456\n'
>>> wen.close()
>>> wen.read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file
>>>
##############################################
mode : (谋得)#模式
文件读写的模式有很多
r #只读
r+ #可读写
w #写入,先删除原文件,再重新写入,如果文件没有则创建。
w+ #读写,先删除原文件,再重新写入,如果文件没有则创建。(可以写入输出)
a #写入:在文件末尾追加新的内容,文件不存在,则创建。
a+ #读写: 在文件末尾追加新的内容,文件不存在,则创建。
b #打开二进制的文件。可以与r,w,a,+结合使用。(写入图片,或者查看图片文件,要加上b,如果不加打开的就是损坏文件)
U #支持所有的换行符号。酋\r" , "\n" , "\r\n"
#########################################
用w参数模式的时候,一定要注意,因为它会先把源文件删除!!!!!!可以单独重新写一个新文件。
write(): 文件写入的参数。
#先定义变量来打开文件,w+模式是删除文件里所有内容。
>>> fnew = open('/root/wenjian.txt',"w+")
>>>
>>> fnew
<open file '/root/wenjian.txt', mode 'w+' at 0x7f369d2df540>
#write参数是写入文件内容。
>>> fnew.write('nihao \nlaji')
>>>
#未关闭文件是看不到文件内容的
>>> fnew.read()
''
>>> fnew.close() #关闭打开的文件,源内容已经删除,现在是新内容。
![image.png](data:image/png;base64,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)
# a 可写, a+可读可写
文件每次打开都有一个隐形的由标或者指针,指针的位置就在开头的第一个数值或者字母那里依次往后读取, 隐形的指针读取完数据以后,才会显示出来我们要看到的数据,隐形指针就到了数值的最后位置,添加数据就添加到了最后。
>>> fnew = open('/root/wenjian.txt',"a+")
>>>
>>> fnew.read()
'nihao \nlaji'
>>>
>>> fnew.write('\nwobuhao')
>>>
>>> fnew.read()
''
>>> fnew.close()
![image.png](data:image/png;base64,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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment