我有一个名为usernames.py的文件,它可能包含一个列表或者根本不存在:
usernames.py
['user1', 'user2', 'user3']
在Python中,我现在想要读取此文件(如果存在)并将新用户附加到列表或使用该用户创建列表,即[' user3']
这就是我的尝试:
with open(path + 'usernames.py', 'w+') as file:
file_string = host_file.read()
file_string.append(instance)
file.write(file_string)
这给了我一个未解决的错误'追加'。我怎样才能做到这一点? Python不知道它是一个列表,如果文件不存在甚至最糟糕,因为我没有任何东西可以转换为列表。
答案 0 :(得分:0)
试试这个:
import os
filename = 'data'
if os.path.isfile(filename):
with open(filename, 'r') as f:
l = eval(f.readline())
else:
l = []
l.append(instance)
with open(filename, 'w') as f:
f.write(str(l))
但如果您不知道文件的来源,这是非常不安全的,因为它可能包含任何代码来执行任何操作!
答案 1 :(得分:0)
最好不要使用python文件进行持久化 - 如果有人给你一个带有漏洞利用代码的usernames.py,会发生什么?考虑一个csv文件或pickle,或者只是每行一个用户的文本文件。
也就是说,如果你不打开它作为python文件,这样的东西应该工作:
from os.path import join
with open( join(path, 'usernames.py'), 'r+') as file:
file_string = file.read()
file_string = file_string.strip().strip('[').strip(']')
file_data = [ name.strip().strip('"').strip("'") for name in file_string.split(',' )]
file_data.append( instance )
file.fseek(0)
file.write(str(file_data))
如果用户名包含逗号或以引号结尾,则必须更加小心。