为什么这种分裂不起作用?当我运行代码split_1
时,不打印。
with open ('r_3exp', 'a+') as file_1:
choice = input ('1 (write) or 2? ')
number = input ('What number?')
if choice == '1':
file_1.write ('\n')
file_1.write ('Here are some numbers : 1233 8989' + ' ' + number)
else:
for line in file_1:
split_1 = line.split (":")
print (split_1)
答案 0 :(得分:2)
这是因为您要以MPNowPlayingInfoCenter
模式打开文件。
a+
允许 读取和附加到文件。从表面上看,这听起来非常适合您的需求。但是,你有一些关于这种模式的细微技巧:
A file opened in a+
is automatically opened at the end of the file。换句话说,您不再从文件的开头读取,而是从它的最后开始。
因此,当您执行a+
时,您实际上开始从文件最末端的字符中读取。因为根据定义,没有任何内容,for line in file_1
返回一个空字符串,line
也是空的。
要解决此问题,请稍微重新组织您的代码以使用 line.split(':')
模式或r
模式更为谨慎:
a
choice = input("1 (write) or 2? ")
if choice == "1":
number = input("What number? ")
with open("r_3exp","a") as file_1:
file_1.write ('\n')
file_1.write ('Here are some numbers : 1233 8989' + ' ' + number)
elif choice == "2":
with open("r_3exp","r") as file_1:
for line in file_1:
split_1 = line.split (":")
print (split_1)
打开你的文件,开始从文件的第一个字符开始读取,而不是从最后一个字符开始读取。
我仍然会为使用Python 2.7的人推荐上述代码,但还有一个警告:r
在Python 2.7中返回input()
,因为它实际上评估作为Python命令的输入。在Python 2.7中使用的正确函数是None
,它正确返回一个字符串。