我一直在寻找高和低的方式来拼凑到一起无济于事。我用我的蟒蛇很生锈,但我试图写一个(我认为)简单的程序,我几乎秃头。 此程序的目标是让某人输入零件编号作为输入,即“ABC”,并搜索与该名称匹配的文件夹的目录,然后打开该文件夹内的所有文件。这通常是一个.pdf,可能还有2-3个excel文件。我可以在使用open()进行测试的同时将整个文件路径粘贴进去,但我希望它基于用户输入。当我运行下面的代码时,我发现它找到了正确的目录中的文件(我创建了一个名为ABC.txt的文件进行测试),但无法打开它,因为它为文件名添加了额外的.txt扩展名。Python 2.7基于用户输入的搜索目录,并打开文件夹中的所有文件
import os
import os.path
partno =""
partno = raw_input("Enter Part No:") #input from user to search dir
yourpath = r'C:\Python27'
#All folders to be searched stem from one parent dir
print ("Loading Part No %r files...Please wait") % partno
for dname, _, fnames in os.walk(r'C:\Python27'):
for fname in fnames:
if partno in fname:
filepath = (os.path.abspath(os.path.join(dname, fname)))
open (filepath,"r")
print filepath
这是我收到的输出...但它不会打开文件。
Enter Part No:ABC
Loading Part No 'ABC' files...Please wait
C:\Python27\Paperless Test\ABC\ABC.txt.txt
编辑:对不起,我离开我的电脑,所以我使用远程桌面,忘了更新后,我断开连接。
今天更新和完成的代码。完美的工作减去一个小问题,这不是一个大问题,应该很容易解决。
这里是我的实际目录的更新代码。再次感谢所有帮助家伙!
import os
partno =""
partno = raw_input("Enter Part No:") #Takes user input of Part No
yourpath = r"Y:\SHOP\MANUFACTURING DOCS" #Parent directory
print ("Loading Part No %r files...Please wait") % partno
for root, dirs, files in os.walk(yourpath, topdown=True):
for name in dirs:
if name == partno: #Matches folder in directory to `part no`
path_to_files = (os.path.abspath(os.path.join(root, name)))
#Stores path in variable so files are only found in this folder
print path_to_files #Confirmation line for me
for dname, _, fnames in os.walk(path_to_files, topdown=True):
for fname in fnames:
if fname.startswith(partno):
filepath = (os.path.abspath(os.path.join(dname, fname)))
os.startfile(filepath) #Opens all files in folder in their
native applications
print filepath
raise SystemExit
注:当我运行这个发现并打印目录非常快,但是当它运行的程序的下半年需要5-10秒内找到,打印和打开文件。这是否与我编码的方式有关?