# 读取文件
### 本地文件
~~~
input_file = open('note.txt','r')
for line in input_file:
line = line.strip() #去除前后空格
print(line)
input_file.close()
~~~
若将其改为函数形式:
~~~
#filename.py
import sys
def process_file(filename):
'''Open, read, and print a file.'''
input_file = open(filename,'r')
for line in input_file:
line = line.strip()
print(line)
input_file.close()
if __name__ == '__main__':
process_file(sys.argv[1])
~~~
在命令行运行该文件,输入如下命令:
~~~
python filename.py test.txt
~~~
命令中的`test.txt`对应于`sys.argv[i]`。
### 互联网上的文件
~~~
# coding=utf-8
import urllib.request
url = 'http://www.weather.com.cn/adat/sk/101010100.html'
web_page = urllib.request.urlopen(url)
for line in web_page:
line = line.strip()
print(line.decode('utf-8')) #加上decode函数才能显示汉字
web_page.close()
~~~
输出结果:
~~~
{"weatherinfo":{"city":"北京","cityid":"101010100","temp":"9","WD":"南风","WS":"2级","SD":"26%","WSE":"2","time":"10:20","isRadar":"1","Radar":"JC_RADAR_AZ9010_JB","njd":"暂无实况","qy":"1014"}}
~~~
若是在命令行运行该文件,输入如下命令:
~~~
python filename.py
~~~
# 写入文件
再打开文件时,除了需要制定文件名外,还需要制定一个模式(“r”,”w”,”a”,分别对应于读取、写入、追加)。如果没有制定模式,则应用默认模式”r”。当以写入模式打开文件且该文件尚不存在时,就会创建出一个相应的新文件。
例如,将“Computer Science”放到文件test.txt中:
~~~
output_file = open('test.txt','w')
output_file.write('Computer Science')
output_file.close()
~~~
一个同时具有读取和写入功能的事例,从输入文件的每一行读取两个数字,在另外一个文件中输出这两个数字以及它们的和。
~~~
#test.py
def mysum(input_filename, output_filename):
input_file = open(input_filename,'r')
output_file = open(output_filename,'w')
for line in input_file:
operands = line.split()
sum_value = float(operands[0]) + float(operands[1])
new_line = line.rstrip() + ' ' + str(sum_value) + '\n'
output_file.write(new_line)
output_file.close()
~~~
`rstrip()`函数用于去掉输入文件每行的换行符。
函数调用:
~~~
from test import *
mysum('test.txt', 'test2.txt')
~~~