在Python中用键盘打开文件

时间:2014-07-15 08:47:23

标签: python list input keyboard

我想在给定目录中的.txt文件上运行脚本。文件夹中的文件将会更改,我有兴趣列出它们并通过键盘输入选择一个。

这是我到目前为止的代码,

    import os    
    folder = os.getcwd() #Current directory
    files = [f for f in os.listdir(folder) if f.endswith('.txt')]
    print 'Files available:\n %r' % files

哪个会给我一个输出,其中包含我可以分析的文件列表。

像这样,

  

可用文件:['File.txt','Foo.txt','Test.txt']

现在是我被困的代码片段:

    while True:
        print "Introduce the name of the file" 
        choice = raw_input()
        if choice.lower() == 'FILE FROM THE LIST':#Here's where I'm stuck
            with open('FILE FROM THE LIST', 'rt') as inputfile:
            data = csv.reader(inputfile)
            #Do stuff
        elif choice.lower() == 'e':
            break
        else:
            print "Please, choose a valid option or type 'e' to exit"

如何输入文件名并从那里运行脚本呢? 理想情况下,我想在列出的文件与密钥或数字之间建立一个链接,以使其更短,例如

  

[输入'1'打开File.txt,
  输入“2”打开Foo.txt,
  输入“3”打开“Text.txt”,...]

但输入名字对我来说是一个很好的方式。

2 个答案:

答案 0 :(得分:1)

您似乎在寻找in关键字。然后你可以检查像

这样的东西
if choice in files:
    #Do whatever you want with that filename

或者您可以考虑首先生成一个字典,其中包含来自文件名的输入键。例如:

my_key_dict={}
for count,entry in enumerate(files):
    my_key_dict[count]=entry

然后检查您的输入:

if choice in my_key_dict:
    filename=my_key_dict[choice]

当然,您还希望以某种方式从my_key_dict为用户生成您的商家信息。

答案 1 :(得分:1)

以下是您问题的简单解决方案:

import glob

files = glob.glob("*.txt")
files.sort()
print "select file:"
for index, filename in enumerate(files):
   print index, filename

print "enter number of file to work on:",
number = int(raw_input())

print "working on file: ", files[number]

请注意我如何使用“glob”模块作为匹配Txt文件的简单方法,而不是循环和匹配。我确实省略了通过int()函数自动转换为整数的用户输入的错误处理。最后,数字现在从零开始。如果您希望它们从一个开始,您可以在显示它们时添加1并从用户输入中减去1。