try:
open_pre = open((preferences.txt), "r")
open_pre = open_pre.read()
open_pre.close()
print(open_pre)
except:
print("Could not load preferences.txt")
我试一试,除了我尝试用我的设置读取文本文件并将其实现到我的程序中,但每次我得到除错误"无法加载preferences.txt"。如何将文件存储在变量中,或者我必须独立读取每一行。
以下是我要加载的内容
# Password protects the program when opened ('True' or 'False')
password_protected = True
user_password = "123"
# Program presets (Ex. ip_preset = "198.148.81.137")
ip_preset = ""
port_preset = ""
hostname_preset = ""
message_preset = ""
# Sends a message in each socket sent ('True' or 'False')
send_message = True
# Auto-generate a message from the internal library. ('True' or 'False')
autogen_msg = True
答案 0 :(得分:1)
假设这是你正在使用的实际代码块,一些非常明显的错误:你得到的是NameError
:
>>> open(data.html, 'r')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'data' is not defined
为什么呢? preferences.txt
被视为变量,而不是字符串。它应该是'preferences.txt'
。
使用不加区别的except
块吞下所有异常是一个非常糟糕的主意。您应该只捕获您知道如何处理的特定例外。
答案 1 :(得分:0)
好像你应该这样做:
open_pre = open('preferences.txt', "r") # file name is a string
file_var = '' # store file in string variable
for line in open_pre:
file_var += line
答案 2 :(得分:0)
目前您的代码中存在一些问题(不只是一个问题)
您正在执行的preferences.txt
被视为&#34; txt
变量&#34;的preferences
属性。您想要的是将文本视为字符串,因此您需要在其周围添加双引号{.1}}。
您将文件打开到名为"preferences.txt"
的变量中。此变量的值是您需要关闭的值。但是,在将数据设置为文件的值(open_pre
)时,将覆盖该数据。这意味着变量的值不再是您需要关闭的文件流,而是文件的内容。你不能关闭一个字符串,只能关闭一个文件,所以在第一个错误之后你将获得第二个错误。相反,在阅读时不要覆盖该文件。
您使用open_pre = open_pre.read()
/ try
子句这一事实意味着您无法收到包含所有错误信息的错误消息。在调试时,请记住不友好的错误消息比模糊但可读的输出更好。更好的练习(可以帮助您找到第一个错误),是指定您要查找的错误,以便使用不友好的错误捕获其他错误。
正确的代码看起来像这样,修复了上面的所有错误。
except