【问题标题】:Adding to user input in python在python中添加到用户输入
【发布时间】: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


【解决方案1】:

main 中,您已经将.txt 添加到用户输入的文件名中。您无需在create_bills() 的公开通话中再次添加它。

【讨论】:

  • 无论哪种方式都无法正常工作,我尝试它是否有特定的方法可以添加到用户输入中
  • @Cos:您将不得不在您的问题中提供任何回溯,以便我们可以看到问题所在。就将.txt 添加到文件名并打开文件而言,您的代码看起来不错。嗯...您可能希望在输入行中添加 .strip(),以防用户在名称之前或之后添加额外的空格。
猜你喜欢
  • 1970-01-01
  • 2020-03-31
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 2016-01-31
  • 2016-07-06
  • 2021-09-03
  • 1970-01-01
相关资源
最近更新 更多