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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Python

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

Q&A

解決済

3回答

1050閲覧

python フォルダ内の複数ファイルの名前の一部を一括で変更したい

Rururu_version

総合スコア2

Python

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

0グッド

0クリップ

投稿2021/08/23 23:52

python フォルダ内の複数ファイルの名前の一部を一括で変更したい

フォルダ内に
AAA_0.4_BBB.xvg
BBB_0.4_DDD.xvg
EEE_0.4_FFF.xvg
のようにファイルがあります。これを一括で
AAA_BBB.xvg
BBB_DDD.xvg
EEE_FFF.xvg
といったようにファイル名の一部を一括で削除したいと考えています

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

for文での繰り返しが上手くいかず、下記のエラーが発生しています
解決方法をご教示いただけますと幸いです。

for (file, i) in (files1, range(len(files1))): ValueError: too many values to unpack (expected 2)

該当のソースコード

python

1import os 2import glob 3 4files1 = glob.glob('*xvg') 5 6print('置換前;', files1) 7 8i = 0 9 10for (file, i) in (files1, range(len(files1))): 11 file_replace = file.replace('0.4_', '') 12 rename = files1[i] 13 os.rename(rename, file_replace) 14 i += 1 15

試したこと

for文の書き方をいろいろと変えましたがうまくいきませんでした。
for file in files1:
for i range(len(files1)):
といった形でも実行したところ、二つ目のfor文を繰り返しが終了してから一つ目のfor文の繰り返し2回目に入るようで、意図した動作をしてくれませんでした(全部同じファイル名にしようとする)

補足情報(FW/ツールのバージョンなど)

Windows10でPython 3.9.6を使用しています

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

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

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

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

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

guest

回答3

0

ベストアンサー

for (file, i) in (files1, range(len(files1))):

for (i, file) in enumerate(files1):

に変更しましょう。

詳しくは、enumerate(iterable, start=0)を読んでください。

投稿2021/08/24 00:38

ppaul

総合スコア24668

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

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

Rururu_version

2021/08/24 01:58

ご回答ありがとうございます。 頂いたコードを適用したところ意図したことができました。 enumerateについては、勉強しておきます。
guest

0

iは不要なんでは

python

1for file in files1: 2 file_replace = file.replace('0.4_', '') 3 os.rename(file, file_replace)

投稿2021/08/24 01:06

y_waiwai

総合スコア88024

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

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

Rururu_version

2021/08/24 01:57

ご回答ありがとうございます。 今回は一番早かった方をベストアンサーにしたいと思います。 ご了承ください。
guest

0

下記でも出来るかと思います。

for (file, i) in zip(files1, range(len(files1))):

投稿2021/08/24 00:44

meg_

総合スコア10716

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

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

Rururu_version

2021/08/24 01:57

ご回答ありがとうございます。 今回は一番早かった方をベストアンサーにしたいと思います。 ご了承ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問