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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

Q&A

解決済

2回答

3508閲覧

“FileNotFoundError: [Errno 2] No such file or directory: 'data/sample.csv'” の対処方法を教えて下さい

NayamiMondai

総合スコア28

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

0グッド

0クリップ

投稿2021/07/09 06:35

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

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

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

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

追伸:コード制作者、スタック・オーバーフローに投稿中でありますが、マルチポストに該当するのなら、お許しください。

python

1from time import sleep 2from selenium import webdriver 3from selenium.webdriver.chrome.options import Options 4from bs4 import BeautifulSoup 5import textwrap 6import csv 7 8#windows(chromedriver.exeのパスを設定) 9chrome_path = r'C:\chromedriver.exe'#driverを入力 10 11#mac 12#chrome_path = 'C:/Users/デスクトップ/python/selenium_test/chromedriver' 13 14# amazonのレビュー情報をseleniumで取得する_引数:amazonの商品URL 15def get_amazon_page_info(url): 16 text = "" # 初期化 17 options = Options() # オプションを用意 18 options.add_argument('--incognito') # シークレットモードの設定を付与 19 # chromedriverのパスとパラメータを設定 20 driver = webdriver.Chrome(executable_path=chrome_path,options=options) 21 driver.get(url) # chromeブラウザでurlを開く 22 driver.implicitly_wait(10) # 指定したドライバの要素が見つかるまでの待ち時間を設定 23 text = driver.page_source # ページ情報を取得 24 25 driver.quit() # chromeブラウザを閉じる 26 27 return text # 取得したページ情報を返す 28 29# 全ページ分をリストにする 30def get_all_reviews(url): 31 review_list = [] # 初期化 32 i = 1 # ループ番号の初期化 33 while True: 34 print(i,'page_search') # 処理状況を表示 35 i += 1 # ループ番号を更新 36 text = get_amazon_page_info(url) # amazonの商品ページ情報(HTML)を取得する 37 amazon_bs = BeautifulSoup(text, features='lxml') # HTML情報を解析する 38 reviews = amazon_bs.select('.review-text') # ページ内の全レビューのテキストを取得 39 40 for review in reviews: # 取得したレビュー数分だけ処理を繰り返す 41 review_list.append(review) # レビュー情報をreview_listに格納 42 43 next_page = amazon_bs.select('li.a-last a') # 「次へ」ボタンの遷移先取得 44 45 # 次のページが存在する場合 46 if next_page != []: 47 # 次のページのURLを生成 48 next_url = 'https://www.amazon.co.jp/' + next_page[0].attrs['href'] 49 url = next_url # 次のページのURLをセットする 50 51 sleep(1) # 最低でも1秒は間隔をあける(サーバへ負担がかからないようにする) 52 else: # 次のページが存在しない場合は処理を終了 53 break 54 55 return review_list 56 57#インポート時は実行されないように記載 58if __name__ == '__main__': 59 60 # Amzon商品ページ 61 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/' 62 63 # URLをレビューページのものに書き換える 64 review_url = url.replace('dp', 'product-reviews') 65 # レビュー情報の取得 66 review_list = get_all_reviews(review_url) 67 68 #CSVにレビュー情報の書き出し 69 with open('data/sample.csv','w') as f: 70 writer = csv.writer(f, lineterminator='\n') 71 72 # 全データを表示 73 for i in range(len(review_list)): 74 csvlist=[] 75 review_text = textwrap.fill(review_list[i].text, 80) 76 #データ作成 77 csvlist.append('No.{} : '.format(i+1)) # 便宜上「No.XX」の文字列を作成 78 csvlist.append(review_text.strip()) # レビューテキストの先頭・末尾の空白文字を除去 79 # 出力 80 writer.writerow(csvlist) 81 # ファイルクローズ 82 f.close() 83 841 page_search 852 page_search 863 page_search 874 page_search 885 page_search 896 page_search 907 page_search 918 page_search 929 page_search 9310 page_search 94--------------------------------------------------------------------------- 95FileNotFoundError Traceback (most recent call last) 96<ipython-input-1-fbb91e326654> in <module> 9767 98 68 #CSVにレビュー情報の書き出し 99---> 69 with open('data/sample.csv','w') as f: 100 70 writer = csv.writer(f, lineterminator='\n') 10171 102 103FileNotFoundError: [Errno 2] No such file or directory: 'data/sample.csv' 104コード

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

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

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

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

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

guest

回答2

0

ベストアンサー

ドキュメントより引用

要求されたファイルやディレクトリが存在しない場合に送出されます。errno ENOENT に対応します。

open()は第2引数が書き込み前提の設定の場合にファイルを作成しますが、フォルダが無いと失敗します。

#CSVにレビュー情報の書き出し with open('data/sample.csv','w') as f: writer = csv.writer(f, lineterminator='\n')

この場合、実行環境から見た相対パスとしてdataというフォルダが存在しないなら、
ファイルの作成ができないため、例外が発生します。
どこかのタイミングでフォルダを作成してください。

投稿2021/07/09 08:30

attakei

総合スコア2738

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

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

NayamiMondai

2021/07/09 12:35

ご助言、ありがとうございます。 本コードの"review_list.append(review) # レビュー情報をreview_listに格納 "とあるので、 osモジュールをインポートして、os.getcwd()を実行してフォルダを確認しましたが、フォルダはありません。 私の浅はかな考えで、”review_list”名でフォルダを作成し、 C:/Users/username/の下に置き、コードを実行しましたが…同じくだめです。
otn

2021/07/09 13:06

回答読んでないのですか???? あるいは、回答の意味が理解できないなら、そう書いた方が良いです。
NayamiMondai

2021/07/09 13:14

すみません。 理解して、書いたつもりですが…。
otn

2021/07/09 13:40 編集

dataと言う名前のフォルダが無いのでdataと言う名前のフォルダーを作れという回答なのですが、 それを読んで何故review_listというフォルダーを作ったのでしょうか?
NayamiMondai

2021/07/09 13:54

attakeiさんの一回目のコメントにも書きましたが…本コードの#を見て、私が勝手に判断しました。 直ぐ、修正します。 作ったフォルダの場所は、これでいいででしょうか? 追伸:ジュピターラボ、デスクトップにフォルダ(データ)が表示されました。
NayamiMondai

2021/07/09 13:56

今、フォルダの中を見ましたらサンプルCSVファイルがありました。 ありがとうございます。
otn

2021/07/09 13:58

回答を読んだがそれを信用せず、自分で独自に考えたことを実行したということでしたか。
NayamiMondai

2021/07/09 14:08

お言葉を返すようで恐縮ですが、”回答を読んだがそれを信用せず”なんて、誓ってそんなことは考えての行動ではありません。単なる私の普段からの軽率な行動の結果です。これからは、その様な事がないよう気をつけていきます。丁寧なご助言、ありがとうございました。
guest

0

エラーでもそう言っているし、自分でも「Jupyter Labのデスクトップに”CSVファイル”自体が無いのに気づきました。」と書いているのですから、その、csvファイルを用意して、所定の場所に置いてください。

投稿2021/07/09 06:45

TakaiY

総合スコア12765

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

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

NayamiMondai

2021/07/09 12:38

ご助言、ありがとうございます。 ”その、csvファイル”が本コードを実行することで生成するはずなのですが…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問