我一直在尋找高和低的方式來拼湊到一起無濟於事。我用我的蟒蛇很生鏽,但我試圖寫一個(我認爲)簡單的程序,我幾乎禿頭。 此程序的目標是讓某人輸入零件編號作爲輸入,即「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秒內找到,打印和打開文件。這是否與我編碼的方式有關?