习题
15:读取文件
这个习题涉及写两个文件,一个是 ex15.py 文件,另外一个是 ex15_sample.txt,是供你的脚本读取的文本文件。下面是该文
本文件的内容。
This is stuff I typed into a file.
It is really cool stuff.
Lots and lots of fun to have in here.
from sys import argv
script, filename = argv
txt = open(filename)
print("Here's your file %r:" % filename)
print(txt.read(), '\n')
print("Type the filename again:")
file_again = input("> ")
txt_again = open(file_again)
print(txt_again.read())
txt.close()
txt_again.close() # 处理完文件后需要将其关闭
习题 _ 16:读写文件
常用命令:
close 关闭文件,跟编辑器的“文件” → “保存”是一个意思
read 读取文件内容,可以把结果赋给一个变量
readline 读取文本文件中的一行
truncate 清空文件
write(stuff) 将 stuff 写入文件
write 需要接受一个字符串作为参数,从而将该字符串写入文件。
from sys import argv
script, filename = argv
print("We're going to erase %r." % filename)
print("If you do't want that, hit CTRL-C(ˇC)")
print("If you do want that, hit RETURN")
input("?")
print("Opening the file...")
target = open(filename, 'w')
print("Truncating the file. Goodbye!")
target.truncate()
print("Now I'm going to ask you for three lines.")
line1 = input("line 1:")
line2 = input("line 2:")
line3 = input("line 3:")
print("I'm going to write these to the file.")
target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")
print("And finally, we close it.")
target.close()
如果用了 ‘w’ 参数,truncate() 是必需的吗?
不是必需的,’w’ 会将原有内容自动清空,进行写入,所以手动清空不是必需的。
习题 17:更多文件操作
将一个文件中的内容复制到另外一个文件中。
from sys import argv
from os.path import exists
script, from_file, to_file = argv
print("Coping from %s to %s." % (from_file, to_file))
# we could do these two on one line too, how?
in_file = open(from_file)
indata = in_file.read() # indata = open(from_file).read()
print("The input file is %d bytes long." % len(indata))
print("Does the output file exist? %r" % exists(to_file))
print("Ready, hit RETURN to continue, CTRL-C to abort.")
input()
out_file = open(to_file, 'w')
out_file.write(indata)
print("Alright, all done")
out_file.close()
in_file.close()
运行该脚本需要两个参数:一个是待复制的文件,另一个是要复制到的文件,使用上个习题的 ex16_sample.txt 作为待复制的文件。
exists 将文件名字符串作为参数,如果文件存在的话,它将返回 True;否则将返回False。
len() 会以数的形式返回你传递的字符串的长度。