問題タブ [shutil]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4400 参照

move - shutil.move 操作中にディレクトリに既に存在するファイルを上書きする

を使用してアーカイブ ディレクトリに移動するソース ファイルがあります。

shutil.move(srcfile, dstdir)

ただし、同じファイルがアーカイブ先ディレクトリに既に存在する場合、移動できないというエラーがスローされます。ファイルは既に存在します。そこで、既存のファイルを上書きしたいと思います。それを行う方法はありますか?

0 投票する
3 に答える
413 参照

python - Pythonでデータを上書きせずに2つのファイルを結合するにはどうすればよいですか?

1 つの数値を含むファイルと、少なくとも 2 行のデータを含むファイルの 2 つのファイルを連結する必要があります。shutil.copyfile(file2,file1) と subprocess.call("cat " + file2 + " >> " + file1, shell=True) を試しましたが、どちらも同じ結果になります。単一の数字を持つファイルには整数と改行 (つまり 2 文字) が含まれているため、2 つのファイルをまとめると、file2 の最初の 2 文字が最後に追加されるのではなく上書きされます。「cat file2 >> file1」を使用してシェルから実行すると、これは発生せず、完全に機能します。

これが私が意味することです:

したがって、取得する代わりに:

私は得る:

この問題の原因はわかりませんが、非常にイライラします。助言がありますか?

0 投票する
4 に答える
2778 参照

python - 「dst」パスが PYthon に存在するかどうかを確認する方法

dst変数内にパスが存在し、ファイルが存在しないかどうかを確認する最良の方法は何ですか..

PS: これが初心者の質問である場合は申し訳ありませんが、学ぶための最良の方法は間違いを犯すことです!

0 投票する
1 に答える
49 参照

python - ファイルの場所を追加して確認する最良の方法

私はまだPythonを学んでいますが、try-exceptメソッド以外に、これはコピーのためにファイルを追加するための適切な方法です.

また、switch ステートメントを使用する方法はありますか、または Python で複数の if ステートメントを使用できますか

0 投票する
0 に答える
874 参照

python - [エラー32]が存在するときにpythonでフォルダーを削除する方法

私はpython 2.7を使用しています。空である場合とそうでない場合があるフォルダーを削除したい。フォルダーは、ファイル監視用のスレッドによって処理されます。スレッドを強制終了することはできませんが、このフォルダーを削除したかったのです。で試しました

しかし、うまくいきませんでした。[Error 32] The process cannot access the file because it is being used by another process: 'c:\\users\\cipher~1\\appdata\\local\\temp\\fis\\a0c433973524de528420bbd56f8ede609e6ea700' フォルダを削除したい、a0c433973524de528420bbd56f8ede609e6ea700またはパス全体を削除したいので、エラーが表示されます。

0 投票する
1 に答える
1632 参照

python - ソースと同じツリー フォルダー パターンを持つ年齢と拡張子に一致する shutil.copy を使用してファイルをコピーする

このコードは、定義されたフォルダーのリストにある新しいファイルをバックアップする必要があります。これは 1 時間ごとに実行する必要があり、別のコードが古いファイルのターゲット フォルダーをクリアします。

最初に時間を定義します。フォルダー内のファイルが 3 日より古い場合、それはコピーされません。

Source_pole は、コピー元のファイルのリストです。

Destination_root はコピー先のターゲットです。ここで、driveName はバックアップ メディアの文字です。

また、C:\folder から *.txt ファイルだけをコピーしたいので、files_pattern が定義されています。しかし、今はコピーして問題なく動作させたいだけです。

関数は問題なく動作し、それらの新しいファイルだけをコピーします。

しかし、一致するsource_poleからすべてのファイルを取得し、それらをすべてフォルダーなしでdestination_rootにコピーしますが、ソースと同じように正確なフォルダーにそれらをコピーします。

shutil.copytree の方がうまく機能することはわかっていますが、これは 1 時間ごとに実行されるバックアップ スクリプトであると想定されており、フォルダーが既に存在するというエラーに対処する方法がわかりません。

os.walk(root_path) は、リスト内のソース ファイルのディレクトリ名を返します。フォルダーが存在しない場合は、os.makedirs(そのフォルダー) が必要ですよね? しかし、どのように?

shutil.copytree ( http://docs.python.org/2/library/shutil.html#copytree-example )に似たものを書いているようです

EDIT1:のために:

作品

しかし、source_pole で別のファイル パスを選択した場合、置換時に文字列を変更する必要があります...

目的地で同じツリー構造を作成するためのより良い方法が必要です。これは面倒です。

EDIT2:したがって、shutil.copytree関数を編集し、ファイルの年齢、パターンの一致、同じファイルを上書きせず、読み取り専用ファイルを書き込み可能として書き込む場合に追加しました。それは私の使用には適していますが、あまり高速ではありません (約 2MB/秒) だけですが、shutil.py に「究極のツールではなく、このサンプル コードを検討してください」という記述があるため、満足していません。コピーツリー関数で。

もっと大きな問題は、関数が *.docx ファイルを開くときに ~$* ファイルのように隠されているファイルにつまずいたときです。エラー 13: Permission Denied で終了し、このエラーを除外できませんでした。それを避けるために、ignore パラメータで shutil.ignore_patterns('~$*') を使用するだけです。どこにエラーがあるのでしょうか?

ところで:特定のレベルでのみファイルをコピーするフォルダー引数を作成したかったのですが、srcで「\」をカウントし、特定の「\」カウントに達したら停止することしか考えられません。より良いアイデアはありますか?

0 投票する
2 に答える
222 参照

python - Pythonで2つのソースファイルを1つの宛先にコピーする

皆さんは私の最後の質問にとても役に立ちました。現在、P2_## という名前のフォルダーがたくさんあり、それぞれに 0_output と 1_output という 2 つのフォルダーが含まれています。各出力フォルダー内に、Bright_Combo.txt という名前のファイルがあります。私がやりたいことは、両方の出力フォルダーから P2_## フォルダーの Bright_Sum.txt ファイルにデータをコピーすることです。これは私がこれまでに得たコードですが、問題は 1_output フォルダーからデータをコピーするだけで、ある場合には Bright_Sum ファイルの空のコピーを 0_output フォルダーに保存することです。

みんな助けてくれてありがとう=)

0 投票する
2 に答える
1254 参照

python - Python shutil.copy が FAT ファイル システム (Ubuntu) で失敗する

問題: Linux で shutil.copy() を使用してファイルを FAT16 マウント ファイルシステムにコピーすると失敗します (Python 2.7.x)。失敗は shutil 内部エラーであり、実際には shutil.chmod で失敗し、shutil.copy が実行されているようです。

FAT ではパーミッションがサポートされていないため、シェル chmod も失敗します。

質問: これをうまく回避する方法はありますか? たとえば、次のようないくつかのオプションがあることを知っています。

  1. copyfile を使用 - ターゲット ディレクトリだけでなく実行可能なフル パスが必要なため、理想的ではありません
  2. シェル cp を実行してファイルをコピーする
  3. ファイルモードを変更しようとしない独自のコピー関数を作成する

Python または FAT マウント オプションでこれを回避する方法はありますか? mount -t vfat -o umask=000 /dev/loop0 /mnt/foo を実行して、プログラム内にファイルシステムをマウントします。

shutil.copy 内で例外が発生し、shutil.copy() が shutil.chmod() から IOException をキャッチすると、呼び出し元の関数に IOException を渡す前にターゲット ファイルを削除するように見えるため、例外をキャッチしても役に立ちません。

アイデアはありますか、それとも 1 ~ 3 から 1 つを選択する必要がありますか?

ハンヌ