Pythonのshutilでファイルを上書きするとき、globでの書き方が分かりません

実現したいこと

moveというディレクトリにはすでにsample1.csvとsample2.csvが入っています。

sample1.csvを新しいsample1.csvで上書きしたいときは
shutil.move(r'sample1.csv', r'.\move\sample1.csv')
と書けば良いです。

同様に
sample2.csvを新しいsample2.csvで上書きしたいときは
shutil.move(r'sample2.csv', r'.\move\sample2.csv')
と書けば良いです。

今、csvファイルがたくさんあってglobを使って一気に上書きしたいときにどのように書けばよいのかが分からないので教えてください。

発生している問題・エラーメッセージ

C:\Python_STDPC\testCV261 Traceback (most recent call last): File "・・・\testCV261\testCV261.py", line 6, in <module> shutil.move(str(i), r'.\move') File "・・・\Python311\Lib\shutil.py", line 823, in move raise Error("Destination path '%s' already exists" % real_dst) shutil.Error: Destination path '.\move\sample1.csv' already exists

該当のソースコード

python

1iimport shutil 2import glob 3 4files = glob.glob('*.csv')5for i in files:6 shutil.move(str(i), r'.\move')

試したこと

6行目を
shutil.move(str(i), r'.\move*.csv')
にすると、以下のようなエラーが出ます。

C:・・・\testCV261 Traceback (most recent call last): File "・・・\Python311\Lib\shutil.py", line 825, in move os.rename(src, real_dst) OSError: [WinError 123] ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。: 'sample1.csv' -> '.\\move\\*.csv' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "・・・\testCV261\testCV261.py", line 6, in <module> shutil.move(str(i), r'.\move\*.csv') File "・・・\Python311\Lib\shutil.py", line 845, in move copy_function(src, real_dst) File "・・・\Python311\Lib\shutil.py", line 436, in copy2 copyfile(src, dst, follow_symlinks=follow_symlinks) File "・・・\Python311\Lib\shutil.py", line 258, in copyfile with open(dst, 'wb') as fdst: ^^^^^^^^^^^^^^^ OSError: [Errno 22] Invalid argument: '.\\move\\*.csv'

コメントを投稿

0 コメント