0

Python の初心者として、私はファイルを移動する際に実際の問題を抱えています。以下は、選択したファイルを選択したディレクトリから新しいフォルダーに移動するだけの、最終的に(!)作成したスクリプトです。私が理解できない何らかの理由で、一度しか機能せず、作成された宛先フォルダーは本当に奇妙でした. ある時点では、未知のアプリケーションである「ディレクトリ」を正しい名前で作成し、別の時点では一見ランダムなファイルを使用してテキスト ファイルを作成し、コンテンツを生成します。この場合も、作成するファイルには正しい名前が付けられています。

関連するスクリプトは次のとおりです。

#!/usr/bin/python

import os, shutil

def file_input(file_name):                
    newlist = []                                                #create new list
    for names in os.listdir(file_name):                         #loops through directory
        if names.endswith(".txt") or names.endswith(".doc"):    #returns only extensions required    
            full_file_name = os.path.join(file_name, names)     #creates full file path name - required for further file modification
            newlist.append(full_file_name)                      #adds item to list
            dst = os.path.join(file_name + "/target_files")
            full_file_name = os.path.join(file_name, names)
            if (os.path.isfile(full_file_name)):
                print "Success!"
                shutil.copy(full_file_name, dst)

def find_file():
    file_name = raw_input("\nPlease carefully input full directory pathway.\nUse capitalisation as necessary.\nFile path: ")
    file_name = "/root/my-documents"                            #permanent input for testing!
    return file_input(file_name)
    '''try:
        os.path.exists(file_name)
        file_input(file_name)
    except (IOError, OSError):
        print "-" * 15
        print "No file found.\nPlease try again."
        print "-" * 15
        return find_file()'''

find_file()

作成したフォルダーを削除して再度実行しようとすると、このスクリプトが再現できない理由と、それを実現するためにできることを教えてください。

少し面倒なのはわかっていますが、これはより大きなスクリプトの一部になる予定で、まだ最初のドラフト段階です!!

どうもありがとう

4

1 に答える 1

0

これは機能します:

import os, shutil

def file_input(file_name):                
    newlist = []                                                #create new list
    for names in os.listdir(file_name):                         #loops through directory
        if names.endswith(".txt") or names.endswith(".doc"):    #returns only extensions required    
            full_file_name = os.path.join(file_name, names)     #creates full file path name - required for further file modification
            newlist.append(full_file_name)                      #adds item to list
            dst = os.path.join(file_name + "/target_files")

            if not os.path.exists(dst):
                os.makedirs(dst)

            full_file_name = os.path.join(file_name, names)
            if (os.path.exists(full_file_name)):
                print "Success!"
                shutil.copy(full_file_name, dst)

def find_file():
    file_name = raw_input("\nPlease carefully input full directory pathway.\nUse capitalisation as necessary.\nFile path: ")
    file_name = "/home/praveen/programming/trash/documents"                            #permanent input for testing!
    return file_input(file_name)

find_file()

コピー先ディレクトリが実際に存在するかどうかを確認し、存在しない場合は作成する必要があります。shutil.copy は、ファイルをそのディレクトリにコピーします

于 2014-01-07T22:51:33.173 に答える