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

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

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

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

Q&A

1回答

685閲覧

ファイル名と同じ名前のフォルダに移動したい

c-man

総合スコア5

Python

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

0グッド

0クリップ

投稿2023/01/24 06:58

前提

ファイルを(ファイル名と前半部分が一致する)フォルダへの移動
https://teratail.com/questions/345730
を参考に以下のコードをさ作成しました。

実現したいこと

ファイル名と同じ名前のフォルダに移動したい

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

FileNotFoundError: [WinError 3] 指定されたパスが見つかりません。

該当のソースコード

import glob import os files = glob.glob('C:\\Users\\thumb\\*.csv') # ファイル一覧 dirs = os.listdir('C:\\Users\\thumb\\') for f in files: filename = os.path.basename(f) num = filename for d in dirs: if num in d: os.rename(f,d+'\\'+filename)
### 試したこと 名前に数字などを入れて参考ページと同様に実施したのですがうまくいきませんでした。 初歩的なことになりますがファイル名と同じ名前のフォルダに移動するヒントなどいただけますでしょうか。

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

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

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

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

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

TakaiY

2023/01/24 07:20

ファイル名と同じ名前のフォルダに移動 とありますが、 対象ファイルは拡張子込みだとどういう名前ですか? 移動先のフォルダはすでに存在しますか? ファイル名とフォルダ名の関係はどのようになっていますか?例を上げて具体的に。 回答はここではなく、質問を編集してください。
guest

回答1

0

os.rename(f,d+'\\'+filename)
ここで、d+'\\'+filenameの結果がどうなるのかプリントしてみては。

投稿2023/01/24 07:21

y_waiwai

総合スコア88173

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

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

c-man

2023/01/24 07:27

コメントありがとうございます。 print(d+'\\'+filename) しているのですがエラー以外なにも返ってこないです。 なぜでしょうか。 以下、エラー文 FileNotFoundError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_26660\3804274544.py in <module> 13 for d in dirs: 14 if num in d: ---> 15 os.rename(f,d+'/'+filename) 16 print(d+'\\'+filename) 17 FileNotFoundError: [WinError 3] 指定されたパスが見つかりません。:C:\\Users\\thumb\\100test.csv' -> '100test.csv/100test.csv'
y_waiwai

2023/01/24 07:30

その os.rename の行をコメントアウトするなりして消しましょう。 それでどう出ますか?
c-man

2023/01/24 07:35

os.renameを消したところ以下のエラーになりました。 TypeError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_26660\3700347577.py in <module> 14 if num in d: 15 # os.rename(f,d+'\\'+filename) ---> 16 print(d+'\\'+filename) 17 TypeError: 'str' object is not callable
c-man

2023/01/24 07:48

printしなおしてみたら以下がでました 100test.csv 100test.csv/100test.csv
y_waiwai

2023/01/24 07:56

それはあなたの意図した結果なんでしょうか
c-man

2023/01/24 08:01

いえ意図した結果ではないです。 100test.csvを C:\\Users\\thumb\\100test に移動させたいです。
c-man

2023/01/24 08:05

filename = os.path.basename(f) 上記の個所で100testを取得したいのですが、 この個所では100test.csvが帰ってきてしまいます。 拡張子を外すにはどうすればいいでしょうか。
y_waiwai

2023/01/24 08:09

python ファイル名を分解、でぐぐるといろいろ出てくるので読んでみよう で、ちなみに、ファイルの移動は、ディレクトリまではつくってくれないので、すでにあるディレクトリにしか移動できません ってことで、そのディレクトリがないときは、それを作ってやらなければなりません
c-man

2023/01/24 08:12

> python ファイル名を分解、でぐぐるといろいろ出てくるので読んでみよう ありがとうございます。 > で、ちなみに、ファイルの移動は、ディレクトリまではつくってくれないので、すでにあるディレクトリにしか移動できません ってことで、そのディレクトリがないときは、それを作ってやらなければなりません ディレクトリは存在しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問