78054


環境は Windows10, Jupyter Lab です。  
下記のコードをコピーペーストして実行した所、エラーが出ました。

私が解決のため行ったことは、

  * エラー文を対訳して意味を検索で調べました。（意味は、そのようなファイルまたはディレクトリはありません）
  * エラー文を検索する。（Google）

検索等を参考に気づいたことは、Jupyter Labのデスクトップに”CSVファイル”自体が無いのに気づきました。  
その後、色々と考えましたが…元のスキルがないので考えようがありません。  
ご教授、宜しくお願い致します。

[code]

    from time import sleep                                      
    from selenium import webdriver                                      
    from selenium.webdriver.chrome.options import Options                                       
    from bs4 import BeautifulSoup                                       
    import textwrap                                     
    import csv                                      
                                            
    #windows(chromedriver.exeのパスを設定)                                        
    chrome_path = r'C:\chromedriver.exe'#driverを入力                                      
                                            
    #mac                                        
    #chrome_path = 'C:/Users/デスクトップ/python/selenium_test/chromedriver'                                      
                                            
    #　amazonのレビュー情報をseleniumで取得する_引数：amazonの商品URL                                       
    def get_amazon_page_info(url):                                      
        text = ""                               #　初期化                                       
        options = Options()                     #　オプションを用意                                      
        options.add_argument('--incognito')     #　シークレットモードの設定を付与                                       
        #　chromedriverのパスとパラメータを設定                                      
        driver = webdriver.Chrome(executable_path=chrome_path,options=options)                                      
        driver.get(url)                         #　chromeブラウザでurlを開く                                     
        driver.implicitly_wait(10)              #　指定したドライバの要素が見つかるまでの待ち時間を設定                                        
        text = driver.page_source               #　ページ情報を取得                                      
                                                
        driver.quit()                           #　chromeブラウザを閉じる                                        
                                                
        return text                             #　取得したページ情報を返す                                      
                                            
    # 全ページ分をリストにする                                      
    def get_all_reviews(url):                                       
        review_list = []                        #　初期化                                       
        i = 1                                   #　ループ番号の初期化                                     
        while True:                                     
            print(i,'page_search')              #　処理状況を表示                                       
            i += 1                              #　ループ番号を更新                                      
            text = get_amazon_page_info(url)    #　amazonの商品ページ情報(HTML)を取得する                                     
            amazon_bs = BeautifulSoup(text, features='lxml')    #　HTML情報を解析する                                       
            reviews = amazon_bs.select('.review-text')          #　ページ内の全レビューのテキストを取得                                        
                                                    
            for review in reviews:                              #　取得したレビュー数分だけ処理を繰り返す                                       
                review_list.append(review)                      #　レビュー情報をreview_listに格納                                     
                                                        
            next_page = amazon_bs.select('li.a-last a')         # 「次へ」ボタンの遷移先取得                                     
                                                    
            # 次のページが存在する場合                                      
            if next_page != []:                                         
                # 次のページのURLを生成                                          
                next_url = 'https://www.amazon.co.jp/' + next_page[0].attrs['href']                                         
                url = next_url  # 次のページのURLをセットする                                       
                                                        
                sleep(1)        # 最低でも1秒は間隔をあける(サーバへ負担がかからないようにする)                                      
            else:               # 次のページが存在しない場合は処理を終了                                       
                break                                       
                                            
        return review_list                                      
                                            
    #インポート時は実行されないように記載                                     
    if __name__ == '__main__':                                      
                                                
        #　Amzon商品ページ                                        
        url = 'https://www.amazon.co.jp/%E6%89%8B%E6%8C%87%E6%B6%88%E6%AF%92%E5%89%A4%E3%80%91%E3%83%8F%E3%83%B3%E3%83%89%E3%82%B9%E3%82%AD%E3%83%83%E3%82%B7%E3%83%A5EX-%E3%81%A4%E3%81%91%E3%81%8B%E3%81%88%E7%94%A8-800ml-%E8%8A%B1%E7%8E%8B%E3%83%97%E3%83%AD%E3%83%95%E3%82%A7%E3%83%83%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E6%8C%87%E5%AE%9A%E5%8C%BB%E8%96%AC%E9%83%A8%E5%A4%96%E5%93%81/dp/B005RUI15O/'                                        
                                                
        # URLをレビューページのものに書き換える                                      
        review_url = url.replace('dp', 'product-reviews')                                       
        # レビュー情報の取得                                     
        review_list = get_all_reviews(review_url)                                           
                                            
        #CSVにレビュー情報の書き出し                                        
        with open('data/sample.csv','w') as f:                                      
            writer = csv.writer(f, lineterminator='\n')                                     
                                            
            # 全データを表示                                       
            for i in range(len(review_list)):                                       
                csvlist=[]                                      
                review_text = textwrap.fill(review_list[i].text, 80)                                        
                #データ作成                                      
                csvlist.append('No.{} : '.format(i+1))    #　便宜上「No.XX」の文字列を作成                                       
                csvlist.append(review_text.strip())         #　レビューテキストの先頭・末尾の空白文字を除去                                        
                # 出力                                            
                writer.writerow(csvlist)                                                            
            # ファイルクローズ                                      
            f.close()                                       
                                            
    1 page_search                           
    2 page_search                           
    3 page_search                           
    4 page_search                           
    5 page_search                           
    6 page_search                           
    7 page_search                           
    8 page_search                           
    9 page_search                           
    10 page_search                          
    ---------------------------------------------------------------------------                         
    FileNotFoundError                         Traceback (most recent call last)                         
    <ipython-input-1-fbb91e326654> in <module>                          
    67                          
         68     #CSVにレビュー情報の書き出し                            
    ---> 69     with open('data/sample.csv','w') as f:                          
         70         writer = csv.writer(f, lineterminator='\n')                         
    71                          
                                
    FileNotFoundError: [Errno 2] No such file or directory: 'data/sample.csv'                           
     
    
[/code]


CC BY-SA 4.0
2021-07-08T08:37:24.987
78050
2021-07-09T06:09:23.873
2021-07-09T06:09:23.873
47203
47203
question
python python3 jupyter-lab
"FileNotFoundError: [Errno 2] No such file or directory: 'data/sample.csv'" の対処方法を教えて下さい


こちらの記事のようにすれば、Jupyter-labの作業ディレクトリが確認出来るでしょう。  
記事はJupyter-notebookのものですが、Jupyter-labでも同様と思われます。  
[カレントディレクトリの確認](https://potesara-tips.com/get-current-working-directory/#toc2)

> カレントディレクトリは、標準ライブラリのosモジュールを使って確認できます。
>

>>

[code]

>>     os.getcwd()

>>  
[/code]

>
> osモジュールをインポートして、os.getcwd()を実行します。
>

>>

[code]

>>     import os

>>     os.getcwd()

>>  
[/code]

>

>>

[code]

>>     'C:\\Users\\user'

>>  
[/code]

>
> windows環境での例ですが、Cドライブの上記フォルダがカレントディレクトリと確認できました。

実際に実行した場合に後ろの`user`は貴方のユーザー名になります。

* * *

質問の内容については、以下のいずれかによって対処出来るでしょう。

  * `data/sample.csv`という相対パスでファイルを指定する場合は、`C:/Users/username/`の下に`data`フォルダを作成し、その中に`sample.csv`ファイルを入れておけば、読み込むことが出来ます。

  * フォルダを作ってファイルを移動しなくても、読み込む際に`data/sample.csv`という相対パスではなく、`C:/`から始まる絶対パスを指定すれば読み込めます。

  * 以下の記事を参考にJupyter-labの作業ディレクトリ自体を変更することが出来ます。  
[Jupyter-
labのデフォルトの作業ディレクトリを変更する(Windows版)](https://tkstock.site/2020/12/12/jupyter-
lab%E3%81%AE%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E4%BD%9C%E6%A5%AD%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8Bwindows/)

パスの区切りは`/`または`\\`が使えます。(`\`は半角の円通貨記号です。)


CC BY-SA 4.0
2021-07-08T10:57:06.117
78054
2021-07-08T10:57:06.117
26370
78050
answer