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

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

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

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

Q&A

解決済

2回答

2099閲覧

Python: フォルダ内のファイル名を一括変換したい

sanze

総合スコア11

Python

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

0グッド

0クリップ

投稿2019/06/12 21:26

エクセルのAコラムに古いファイル名、Bコラムに新しいファイル名をいれてあります。
フォルダ/folder_pdf/には、古いファイル名のPDFが複数入っています。
これをBコラムの新しいファイル名に一括変換したいのですが、エラー(The system cannot find the file specified: 'ABC.pdf' -> 'abc-forum-2019.pdf')が出てしまいます。
os.path.abspathのあたりかな?とは思うのですが、前に進みません。
ご指導お願い致します。

import os, sys import openpyxl # open excel file book = openpyxl.load_workbook('C:/Desktop/python3/folder_pdf/rename.xlsx', data_only = True) # excel sheet sheet = book.get_sheet_by_name('Sheet1') dict = {} # for row in sheet.rows: for row in range(2, 5): pdf1_name = sheet['A' + str(row)].value pdf2_name = sheet['B' + str(row)].value dict[pdf1_name] = pdf2_name os.path.abspath('C:/Desktop/python3/folder_pdf/') for key, value in dict.items(): os.rename(key, value)

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

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

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

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

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

guest

回答2

0

ベストアンサー

Python

1os.path.abspath('C:/Desktop/python3/folder_pdf/') 2 3for key, value in dict.items(): 4 os.rename(key, value)

の部分を

Python

1dirname = 'C:/Desktop/python3/folder_pdf/' 2for key, value in dict.items(): 3 os.rename(os.path.join(dirname, key), 4 os.path.join(dirname, value))

としてみては如何でしょうか。

投稿2019/06/12 23:41

magichan

総合スコア15898

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

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

sanze

2019/06/14 19:04 編集

迅速な回答ありがとうございます。 この通りに書き換えてみましたら、解決いたしました。ありがとうございました。
guest

0

"C:/Desktop/python3/folder_pdf/" の配下に対象ファイルありますか?

お使いの環境がわかりませんが、最近のwindows だと、C:\Users(ユーザ名)\Desktop とかになるかと思います。

変換対象のファイルのプロパティで、正確な場所が確認できるかと思いますので確認してみてはいかがでしょうか

投稿2019/06/12 23:32

Akashic

総合スコア298

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

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

sanze

2019/06/14 19:03

迅速な回答ありがとうございます。 /Users/が確かに抜けておりました。ご指摘ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問