鱼C论坛

 找回密码
 立即注册
查看: 2242|回复: 0

[技术交流] python入门L28文件

[复制链接]
发表于 2017-7-11 04:06:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
程序:输入处理输出
目前我们使用input输入,print输出打印结果,而不满足现状。
需要代码自动分析操作系统的日志,需要把分析的结果可以保存为一个新的文本,甚至需要跟外界进行交流
在编写代码的时候,操作系统为了更好地做出响应,会把所有的数据放在内存中进行,因为内存和cpu的数据传输速度会比硬盘和cpu的传输速度快很多。内存的缺点:一旦断电,数据消失。
什么是文件?
.exe,.txt,.ppt,.jpg,.mp4,.avi
打开文件

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
    Open file and return a stream.  Raise IOError upon failure.
Character Meaning
    --------- ---------------------------------------------------------------
    'r'       open for reading (default)
    'w'       open for writing, truncating the file first
    'x'       create a new file and open it for writing
    'a'       open for writing, appending to the end of the file if it exists
    'b'       binary mode
    't'       text mode (default)
    '+'       open a disk file for updating (reading and writing)
    'U'       universal newline mode (deprecated)

扩展阅读:文件的打开模式和文件对象方法

Python 和java中有回收机制,如果忘记关闭文件当计数器计数到0时会自动关闭文件,
但也不是说就不关闭文件了,当文件有写入操作的时候,当写入完成后应该关闭文件
python会缓存写入数据,当此时断电,数据不会被写入到文件中,所以要养成写入完之后关闭文件的习惯。
f.read([size=-1])从文件中读取size个字符,如果不指定则将文件全部读取出来,文件的指针指向末尾
>>> f=open('F:\\kit studium\ss1718\python\pythonproject\L28wenjianduqu.txt','r')
>>> f
<_io.TextIOWrapper name='F:\\kit studium\\ss1718\\python\\pythonproject\\L28wenjianduqu.txt' mode='r' encoding='cp936'>
>>> f.read()
'他和一只猫的故事\n雨夜的冷清让他醉酒的头脑多了几分清明,忽而听得\n垃圾桶的方向有几声细弱的喵喵声。辰溪踉跄着走到\n垃圾桶边,掀开被雨打湿的硬纸板,眼睛便和一双无\n助可怜的圆圆大眼睛对视了。'
>>> f.read()
''
>>> f.close()
>>> f=open('F:\\kit studium\ss1718\python\pythonproject\L28wenjianduqu.txt','r')
>>> f.read(5)
'他和一只猫'
>>>
>>> f.tell()一个中文字符占两个字节,f.tell()返回文件指针的位置,
10
>>> f.seek(10,0)从0字节开始偏移10个字节后读取文件的一行
10
>>> f.readline()
'的故事\n'
使用list()可以将文件对象转换为列表
>>> f.seek(0,0)
0
>>> lines=list(f)
>>> for each_line in lines:
        print(each_line)

       
他和一只猫的故事

雨夜的冷清让他醉酒的头脑多了几分清明,忽而听得

垃圾桶的方向有几声细弱的喵喵声。辰溪踉跄着走到

垃圾桶边,掀开被雨打湿的硬纸板,眼睛便和一双无

助可怜的圆圆大眼睛对视了。
>>>
当文件非常长的时候,文件将转换为一个非常长的列表,这样就非常没有效率
改进:
>>> f.seek(0,0)
0
>>> for each_line in f:            用for直接迭代出来----这样效率比较高
        print(each_line)
       
文件的写入:
f.write(str)
f.writelines(seq)
但要确保文件打开时使用a 或者w模式,否则会出现异常
>>> f.write('I love you')
Traceback (most recent call last):
  File "<pyshell#25>", line 1, in <module>
    f.write('I love you')
io.UnsupportedOperation: not writable
>>> f=open('F:\\test.txt','w')创建一个新文件
>>> f=open('F:\\test.txt','w')
>>> f.write('I love FishC')
12
>>> f.close()

评分

参与人数 2荣誉 +3 鱼币 +4 收起 理由
康小泡 + 1
小甲鱼 + 3 + 3 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 21:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表