问答题
0. 下边只有一种方式不能打开文件,请问是哪一种,为什么?
>>> f = open('E:/test.txt', 'w') # A
>>> f = open('E:\test.txt', 'w') # B
>>> f = open('E://test.txt', 'w') # C
>>> f = open('E:\\test.txt', 'w') # D
答:B不能打开文件。
Windows在路径名中既可以接受斜线(/)也可以接受反斜线(\),不过如果使用反斜线作为路径名的分隔符的话,要注意使用双反斜线(\)进行转义,否则Python会将反斜线进行转义,例如(\n)看成一个换行符,(\t)看作一个制表符等。
3. 尽管Python有所谓的“垃圾回收机制”,但对于打开了的文件,在不需要用到的时候我们仍然需要使用f.close()将文件对象“关闭”,这是为什么呢?
答:Python拥有垃圾收集机制,会在文件对象的引用计数降至零的时候自动关闭文件,所以在Python编程里,如果忘记关闭文件并不会造成内存泄漏那么危险。
但并不是说就可以不要关闭文件,如果你对文件进行了写入操作,那么你应该在完成写入之后进行关闭文件。因为Python可能会缓存你写入的数据,如果这中间如果断电了什么的,那些缓存的数据根本就不会写入到文件中。所以,为了安全起见,要养成使用完文件后立刻关闭的优雅习惯。
6. 文件对象的内置方法f.read([size=-1])作用是读取文件对象内容,size参数是可选的,那如果设置了size=10,例如f.read(10),将返回什么内容呢?
答:将返回从文件指针开始(注意这里并不是文件头哦)的连续10个字符。
7. 如何获得文件对象(f)当前文件指针的位置?
答:f.tell()会告诉你。
动动手
0. 尝试将文件(OpenMe.mp3)打印到屏幕上。
答:代码如下:
f = open('OpenMe.mp3')
for each_line in f:
print(each_line, end='')
f.close()
1. 编写代码,将上一题中的文件(OpenMe.mp3)保存为新文件(OpenMe.txt)
答:代码如下:
f1 = open('OpenMe.mp3')
f2 = open('OpenMe.txt', 'x') # 使用”x”打开更安全
f2.write(f1.read())
f2.close()
f1.close()
0. 编写一个程序,接受用户的输入并保存为新的文件,程序实现如图:
答:代码如下:
def file_write(file_name):
f = open(file_name, 'w')
print('请输入内容【单独输入\':w\'保存退出】:')
while True:
write_some = input()
if write_some != ':w':
f.write('%s\n' % write_some)
else:
break
f.close()
file_name = input('请输入文件名:')
file_write(file_name)