前提・実現したいこと
CSVから読み込んだ内容を元に、ファイル名を変更したいと考えております。
このCSVは日本語、記号を含んだファイル名となります。(ただし、,は含みません)
rename.confの中身は下記のとおりです。
ファイル名に、#と=が必須の命名規則となります。
テスト1.txt,val1=1#val2=2#val3=3 test2.txt,val4=4#val5=5#val6=6
期待値としては、「テスト1.txt」が「val1=1#val2=2#val3=3」と変更されることです。
該当のソースコード
下記でテストを致しました。
R_Rule='/tmp/rename.conf' with open(R_Rule, 'rb') as f: enc=str(chardet.detect(f.read())).split() enc_arg=enc[1].replace('\'','"').replace(',','') r_csv_file = open(R_Rule, "r", encoding=enc_arg, errors="", newline="" ) rc = csv.reader(r_csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True) for rrow in rc: print(rrow[0] + ' : ' + rrow[1]) os.rename(rrow[0],rrow[1])
発生している問題・エラーメッセージ
期待値 テスト1.txt ⇒ val1=1#val2=2#val3=3 実際 テスト1.txt ⇒ 'val1=1#val2=2#val3=3'
試したこと
python 3.9 にて実施しておりますが、
前後でシングルクォーテーションを削除したり、他の型に変更したりしたのですが、
出力ファイル名にシングルクォーテーションが入ってしまいます。
色々試行錯誤した結果、=が入るとシングルクォーテーションが付与になるのが分かりました。
splitで分割して、os.renameに渡したりもしたのですが、結局シングルクォーテーション付となってしまいました。
###ご質問
上記の期待値を出すためにはどのように記号付きのファイル名で、os.renameを呼び出せばよろしいでしょうか?
別でシェル等を呼び出してシングルクォーテーションを消したり、リネーム操作自体を別の言語で処理させるか検討しておりますが、可能であれば、pythonで実装したいと考えております。
お知恵をお貸しいただけますと幸いでございますが、宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/30 14:26