这里有新鲜出炉的 Python 入门, 程序狗速度看过来!
Python 编程语言
Python 是一种面向对象, 解释型计算机程序设计语言, 由 Guido van Rossum 于 1989 年底发明, 第一个公开发行版发行于 1991 年. Python 语法简洁而清晰, 具有丰富和强大的类库. 它常被昵称为胶水语言, 它能够把用其他语言制作的各种模块 (尤其是 C/C++) 很轻松地联结在一起.
文件操作对编程语言的重要性不用多说, 如果数据不能持久保存, 信息技术也就失去了意义. 按照本人经验, IO 也是蛮头疼的一件事, 因为不会用得太多, 所以总是记不住 API, 每次都要重新 google 就会打断思路, 还不一定每次都快速得到正确的文章.
文件的读操作
示例:
print("-> 文件句柄的获取, 读操作:")
f = open('无题','r',encoding='utf8')
d = f.read()
f.close()
print(d)
print('-> 例二:')
f = open('无题','r',encoding='utf8')
e = f.read(9)
f.close()
print(e)
#python3 中, 文件中一个中英文都占位 1
运行结果:
复制代码
-> 文件句柄的获取, 读操作:
昨夜星辰昨夜风
画楼西畔桂堂东
身无彩凤双飞翼
心有灵犀一点通
-> 例二:
昨夜星辰昨夜风
画
文件的写操作
知识点:
1. 写操作前, 文件先格式化清空文件
2. 清空操作, 在执行 open 的 w 方法后, 清空
print("写的操作, 写文件的时候, 不能调用读方法, 读文件的时候, 不能调用写方法")
f = open('python','w',encoding='utf8')
f.write("I must learn python \nbecause, python is important \n")
f.write("java is better?")
f.write("maybe") #上面的语句, 没有加换行符, 所以输出的内容是紧接的
f.close()
运行结果:
打开文件后显示如下
I must learn python
because, python is important
java is better?maybe
文件的 append 方法
语法格式:
f = open('文件名','a','encoding = utf8')
文件这种方法为追加模式: 1, 空白文件中, 直接从头开始写入内容; 2 有内容的文件, 会在末尾开始继续写入内容
示例:
f = open('python','a',encoding='utf8')
f.write("花开又花落")
f.close()
运行结果:
I must learn python because,
python is important
java is better?maybe 花开又花落
readline 和 readlines
readline 是逐行读取
readlines 是全文读取
示例:
print("readline 方法")
f = open('无题','r',encoding='utf8')
a = f.readline()
print("此时光标位置:",f.tell())
b = f.readline()
print("此时光标位置:",f.tell())
print(a.strip()) #strip 是字符串方法中去除空格和换行的方法
print(b.strip())
print("readlines 方法, 会将每行的内容组成一个列表打印")
f = open('无题','r',encoding='utf8')
c = f.readlines()
print(c)
print(id(c))
print(id(f))
for i in c:
print(i.strip())
print("遍历方法")
f.seek(0)
for i in f:
print(i.strip())
f.close() #文件的操作中, close() 方法一定不能忘记
运行结果:
readline 方法
此时光标位置: 23
此时光标位置: 46
昨夜星辰昨夜风
画楼西畔桂堂东
readlines 方法, 会将每行的内容组成一个列表打印
['昨夜星辰昨夜风 \ n', '画楼西畔桂堂东 \ n', '身无彩凤双飞翼 \ n', '心有灵犀一点通']
37826824
5344280
昨夜星辰昨夜风
画楼西畔桂堂东
身无彩凤双飞翼
心有灵犀一点通
遍历方法
昨夜星辰昨夜风
画楼西畔桂堂东
身无彩凤双飞翼
心有灵犀一点通
文件的 tell() 和 seek() 方法
示例:
f = open('无题','r',encoding='utf8')
f.read(4)
print('当前光标位置',f.tell())
f.seek(10)
print('当前光标位置',f.tell())
f.close()
#read 时, 一个中文算三个字符
运行结果:
当前光标位置 12
当前光标位置 10
文件操作之 flush 方法
import sys,time
for i in range(20):
sys.stdout.write("#")
sys.stdout.flush()
time.sleep(1)
truncate 方法
f = open('test','w')
f.write("hello")
f.write("\n")
f.write("python")
f.flush() #这样不用执行 close 方法, 内存中的数据, 就会写入到 disk
f.close()
f = open('test','a')
f.truncate(2) #截断方法, 光标从 2 开始往后截取
f.close()
其他的文件方法: r+ 读写方法
基于字符 read & write
最基本的文件操作当然就是在文件中读写数据. 这也是很容易掌握的. 现在打开一个文件以进行写操作:
fileHandle = open ( 'test.txt', 'w' )
'w'是指文件将被写入数据, 语句的其它部分很好理解. 下一步就是将数据写入文件:
fileHandle.write ( 'This is a test.\nReally, it is.' )
这个语句将 "This is a test." 写入文件的第一行,"Really, it is." 写入文件的第二行. 最后, 我们需要做清理工作, 并且关闭文件:
fileHandle.close()
正如你所见, 在 Python 的面向对象机制下, 这确实非常简单. 需要注意的是, 当你再次使用 "w" 方式在文件中写数据, 所有原来的内容都会被删除. 如果想保留原来的内容, 可以使用 "a" 方式在文件中结尾附加数据:
fileHandle = open ( 'test.txt', 'a' )
fileHandle.write ( '\n\nBottom line.' )
fileHandle.close()
然后, 我们读取 test.txt, 并将内容显示出来:
fileHandle = open ( 'test.txt' )
print fileHandle.read()
fileHandle.close()
以上语句将读取整个文件并显示其中的数据.
基于行的读写 line
fileHandle = open ( 'test.txt' )
print fileHandle.readline() # "This is a test."
fileHandle.close()
同时, 也可以将文件内容保存到一个 list 中:
fileHandle = open ( 'test.txt' )
fileList = fileHandle.readlines()
for fileLine in fileList:
print '>>', fileLine
fileHandle.close()
或者在文件中一次读取几个字节的内容:
fileHandle = open ( 'test.txt' )
print fileHandle.read ( 1 ) # "T"
fileHandle.seek ( 4 )
print FileHandle.read ( 1 ) # " "(原文有错)
来源: http://www.phperz.com/article/18/0129/360914.html