質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1066閲覧

ファイル名前変更が連続でできない

tir0318

総合スコア2

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/09/19 12:14

編集2021/09/19 12:15

今ファイルの名前を変更するプログラムを作っているのですが、少数でやる分にはきちんと変更できるのですが、大量にやろうとすると途中で、
FileExistsError: [WinError 183] 既に存在するファイルを作成することはできません。2回目に実行すると先ほどまでできなかったファイルの名前も変更できます。きちんと連続してファイル変更するためにはどうしたらいいですか

import globa import os import datetime path = 'C:/Users/yuruy/Desktop./test' files = os.listdir(path) l = [] count = 0 count0 = 0 for file in files: file1 = os.path.join(path, file) file_name = file.split('.')[0] ext = file.split('.')[1] file_judgement = file.startswith('【') if file_judgement == True: break created_time = os.stat(file1).st_mtime date = datetime.datetime.fromtimestamp(created_time) date = date.strftime('%Y_%m_%d') #print('更新日') #print(date) file_num1 = 1 file_num2 = 0 file_str1 = str(file_num1) file_str2 = str(file_num2) file_str0 = file_str2 + file_str1 file_num1+=1 new_file = '【{}】{}.{}'.format(date,file_str0 , ext) file2 = os.path.join(path, new_file) for file in files: if date in file: l.append(file) count+=1 if l: fname = l[count-1].split('】')[1] num0 = fname.split('.')[0] j = [int(x) for x in list(str(num0))] file_num1 = j[1]+1 file_num2 = j[0] file_str1 = str(file_num1) file_str2 = str(file_num2) file_str0 = file_str2 + file_str1 new_file = '【{}】{}.{}'.format(date,file_str0 , ext) file2 = os.path.join(path, new_file) os.rename(file1, file2)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Windowsですよね。Pythonでの経験は無いですが、VBScriptで同じような経験があります。
プログラミングの記述上では完了しているはずの場合でも、実際の反映にタイムラグがあるということだろうと思って、時間待ちを入れたら解決しました。

変更のディスクへの反映を遅延させるのは速度向上のために有用なことですが、同じプロセスで引き続き処理するなら、同じ未反映のメモリ上のデータを参照するべきなのに、おそらくWindowsの作りはそうなってないと言うことでしょう。

投稿2021/09/19 13:22

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tir0318

2021/09/22 06:04

ありがとうございます。遅延することができることを知らなかったので、調べながら頑張ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問