2017-08-07 12 views
0

私はこれを一緒に無駄にする方法のために高低を探しています。私は私のpythonでかなり錆びついていますが、(私が考えるもの)シンプルなプログラムを書こうとしていて、私はほとんど禿げています。 このプログラムの目標は、誰かがパートナンバーを入力(「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 

編集:私は、リモートデスクトップを使用して、私が切断した後、これを更新するのを忘れていますので、私は私のPCから離れています不足している行のために申し訳ありません。

今日、コードが更新され、終了しました。主要な問題ではなく、かなり簡単に解決されるはずの1つの小さな問題を完全に除いて完全に動作します。

ここに私の実際のディレクトリの更新コードがあります。すべての助けを借りてくれてありがとう!

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秒かかります。これにはコード化された方法と関係がありますか?

答えて

0

コメントに記載されているように、openは実際にはのファイルを開いてというファイルを考えているだけで、問題のファイルへの参照が渡されます。

os.startfile(filename) 

リンク@identicon質問への受け入れ答えはに異なるアプローチを言及に起こる:

は、あなたが別の機能を必要とする( Windowsのに)与えられたファイルを使用してアプリケーションを起動するにはクロスプラットフォーム( os.subprocessを使用)。

関連する問題