【发布时间】:2014-11-12 09:44:14
【问题描述】:
我试图让用户输入文件名的输入,我想做的只是让用户输入不带扩展名的文件名。由于唯一适用的文件是 .txt 文件,让用户键入扩展名似乎是多余的,所以我想用代码添加文件扩展名,这就是我目前所拥有的:
def create_bills(filename, capacity):
f = open(filename)
mytable = mkHashTable(capacity)
for line in f:
txt = line.strip().split(' $')
person = Person(txt[0], txt[1])
if not person.name in keys(mytable):
mytable = put(mytable, person.name, person.bill)
elif person.name in keys(mytable):
index = indexOf(mytable, person.name)
else:
pass
def main():
capacity = int(input("Size of Hashtable: "))
file = input("Enter file to be read: ")
filename = (file +'.txt')
create_bills(filename, capacity)
我不确定如何实际解决此问题并将 .txt 添加到用户输入中。 示例:
请输入文件名: 帮助
....帮助.txt
错误:
Traceback (most recent call last):
File "C:/Users/Th3M1k3/Desktop/python/beeb lab/bieberhash.py", line 30, in <module>
main()
File "C:/Users/Th3M1k3/Desktop/python/beeb lab/bieberhash.py", line 28, in main
create_bills(filename, capacity)
File "C:/Users/Th3M1k3/Desktop/python/beeb lab/bieberhash.py", line 12, in create_bills
f = open(filename, '.txt')
ValueError: invalid mode: '.txt'
【问题讨论】:
-
到底是什么问题?
-
您的代码已经完成了您的要求:
file + '.txt'将file中的任何字符串(在本例中为用户输入)和文字字符串.txt连接起来。 (括号没有添加任何内容,但除了可读性之外它们不会损害任何内容。) -
您最有可能遇到的问题是
open(filename, '.txt')会给您一些关于.txt不是open的有效模式的异常。答案是不要将'.txt'作为第二个参数传递。 -
您不应该从您发布的代码中收到该错误 - 您是否使用相同的
open调用更新了您的实际代码? -
是的,我已经完全按照你所看到的做了,这就是我如此困惑的原因。
标签: python python-3.x