Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我使用pickle正确吗?-Python_Python_List_Pickle - Fatal编程技术网

我使用pickle正确吗?-Python

我使用pickle正确吗?-Python,python,list,pickle,Python,List,Pickle,我是Python初学者,因此不确定为什么会出现以下错误: TypeError:无效文件:[] 对于这一行代码: usernamelist=open(用户名,'w') 我正在尝试输入用户名和密码,将它们写入文件,然后读取它们 以下是我的代码的其余部分: user_names=[] passwords=[] username=input('Please enter a username') password=input('Please enter a password') usernamelist=

我是Python初学者,因此不确定为什么会出现以下错误:

TypeError:无效文件:[]

对于这一行代码:

usernamelist=open(用户名,'w')

我正在尝试输入用户名和密码,将它们写入文件,然后读取它们

以下是我的代码的其余部分:

user_names=[]
passwords=[]
username=input('Please enter a username')
password=input('Please enter a password')
usernamelist=open(user_names,'w')
pickle.dump(userName,usernamelist)
usernamelist.close()
usernamelist=open(user_names,'r')
loadusernames=pickle.load(usernamelist)

passwordlist=open(passwords,'w')
pickle.dump(password,passwordlist)
passwordlist.close()
passwordlist=open(passwords,'r')
loadpasswords=pickle.load(passwordlist)

所有答案将不胜感激。谢谢。

根据您的脚本,这可能会有所帮助。它创建一个“username.txt”和“password.txt”来存储输入的用户名和密码

我使用python2.7,python2.7和python3.x中的输入行为不同

"""
opf: output file
inf: input file

use with instead of .open .close: http://effbot.org/zone/python-with-statement.htm

for naming rules and coding style in Python: https://www.python.org/dev/peps/pep-0008/
"""


import pickle

username = raw_input('Please enter a username:\n')
password = raw_input('Please enter a password:\n')

with open('username.txt', 'wb') as opf:
    pickle.dump(username, opf)

with open('username.txt') as inf:
    load_usernames = pickle.load(inf)
    print load_usernames

with open('password.txt', 'wb') as opf:
    pickle.dump(password, opf)

with open('password.txt') as inf:
    load_passwords = pickle.load(inf)
    print load_passwords

用户名和密码不是文件,而是列表。如果您只是尝试将输入添加到列表中,则可以将其附加到列表中。
open()
的第一个参数应该是文件名,您将向其传递一个
列表。这有一些例子。另外,将密码存储在未加密的文件中可能不是一个好主意。如果您使用的是Python3,您肯定需要为二进制文件包含一个“b”。顺便说一句,如果您使用的是Python2.7,请使用
import cPickle as pickle
。“cPickle是用C编写的,所以它比pickle快1000倍。”()。如果您使用的是Python3.x,只需导入pickle,程序将尝试自动导入优化版本。