

### 前提・実現したいこと

デスクトップにあるcsvファイル名「fm_data20?? _??_??」を検索して「アップロード.csv」に変更したいです。

「fm_data20?? _??_??」は日々変わるため、任意の一文字「?」を入れています。  
import osとimport globをインポートするのだと思うのですが、  
コードの書き方がイマイチよくわかりません。

よろしくお願いします。

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

[code]

    TypeError                                 Traceback (most recent call last)
    <ipython-input-41-1abdd7eb4bb9> in <module>
          9 
         10 # ファイル名の変更
    ---> 11 os.rename(path1, path2)
         12 
         13 # ファイルの存在確認
    
    TypeError: rename: src should be string, bytes or os.PathLike, not list
    
[/code]

### 該当のソースコード

[code]

    import os
    import glob
    
    # 変更前ファイル
    path1 = glob.glob(r'C:\Users\tani\Desktop/fm_data20??_??_??.csv')
    
    # 変更後ファイル
    path2= r'C:\Users\tani\Desktop\アップロード.csv'
    
    # ファイル名の変更 
    os.rename(path1, path2) 
    
    # ファイルの存在確認 
    print(os.path.exists(path2))
    
[/code]

### 補足情報（FW/ツールのバージョンなど）

Python 3.7.3  
Windows7  
jupyter notebook  
chromedriver


CC BY-SA 4.0
2019-12-22T07:40:23.757
61671
2019-12-22T10:44:56.560
2019-12-22T10:44:56.560
3060
37133
question
python python3 selenium
デスクトップにあるcsvファイル名「fm_data20??_??_??」を検索してリネームさせたい


`glob.glob`はマッチするパスのリストを返します。

[glob --- Unix 形式のパス名のパターン展開 — Python 3.7.6
ドキュメント](https://docs.python.org/ja/3.7/library/glob.html#glob.glob)

> pathname (パスの指定を含んだ文字列でなければいけません) にマッチする、空の可能性のあるパス名のリストを返します。pathnameは
> (/usr/src/Python-1.5/Makefileのように) 絶対パスでも、(../../Tools/ _/_.gifのように)
> 相対パスでもよく、シェル形式のワイルドカードを含んでいてもかまいません。結果には (シェルと同じく)  
>  壊れたシンボリックリンクも含まれます。

そのため返されたリストの要素を`for`文などを使って`rename`に渡してやる必要があります。  
(`/`になっている部分を`\`に変えてあります)

[code]

    path_list = glob.glob(r'C:\Users\tani\Desktop\fm_data20??_??_??.csv')
    
    path2= r'C:\Users\tani\Desktop\アップロード.csv'
    
    for path1 in path_list:
        os.rename(path1, path2) 
    
    
[/code]

とはいえ、複数のファイルを`アップロード.csv`にリネームしたいということはないと思うので、質問者さんの目的に適うのであれば、空のリストではないことをチェックして、第１要素を渡してしまってもよいでしょう。

[code]

    if path_list:
        os.rename(path_list[0], path2)
    
[/code]


CC BY-SA 4.0
2019-12-22T08:03:36.677
61672
2019-12-22T08:22:09.157
2019-12-22T08:22:09.157
13199
13199
61671
answer