我想在给定目录中的.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”,...]
但输入名字对我来说是一个很好的方式。
答案 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。