ファイルを使用os.walk
してから反復処理するときは、ファイル名のみを反復処理していることに注意してください。完全なパス (os.rename
正常に機能するために必要なもの) ではありません。ファイル自体にフルパスを追加することで調整できます。この場合、次を使用して結合directname
および結合することで表されます。filename_zero
os.path.join
os.rename(os.path.join(directname, filename_zero),
os.path.join(directname, filename_zero.replace(".", "")))
また、他の場所で使用するかどうかはわかりませんが、filename_split
変数を削除してfilename_zero
asを定義することもできますfilename_zero = os.path.splitext(file)[0]
。これは同じことを行います。ディレクトリは Python によって適切に解釈されるため、に変更することもcustomer_folders_path = r"C:\Users\All\Documents\Cust"
できます。customer_folders_path = "C:/Users/All/Documents/Cust"
編集: @bozdoz が賢く指摘したように、接尾辞を分割すると、「元の」ファイルが失われるため、見つけることができません。あなたの状況でうまくいくはずの例を次に示します。
import os
customer_folders_path = "C:/Users/All/Documents/Cust"
for directname, directnames, files in os.walk(customer_folders_path):
for f in files:
# Split the file into the filename and the extension, saving
# as separate variables
filename, ext = os.path.splitext(f)
if "." in filename:
# If a '.' is in the name, rename, appending the suffix
# to the new file
new_name = filename.replace(".", "")
os.rename(
os.path.join(directname, f),
os.path.join(directname, new_name + ext))