発生している問題・エラーメッセージ
例外が発生しました: OSError [Errno 22] Invalid argument: 'ポケモンの日常(生活)/Steven "Ski" Nosov さん.jpg'
'{}.jpg'.format(name)
で、nameが n:go さん だと、: 以降の文字がフォーマットされなかったり、
Steven "Ski" Nosov さん の場合は上記のエラーが出てしまいます。
" : などの記号も含めてフォーマットするにはどうすればいいでしょうか?
該当のソースコード
python
1import time 2 3import requests 4from selenium import webdriver 5from selenium.webdriver.common.by import By 6 7 8def main(): 9 driver = webdriver.Firefox( 10 executable_path='..\\geckodriver.exe') 11 driver.get('https://www.ptcgic-cr.com/2022/result/primary-selection/') 12 driver.set_window_position(0, 0) 13 driver.set_window_size(800, 600) 14 15 time.sleep(10) 16 17 elements = driver.find_elements( 18 By.XPATH, '//section[@class="prize-Artworks_Item"]') 19 for element in elements: 20 img = element.find_element( 21 By.XPATH, './/img') 22 name = element.find_element( 23 By.XPATH, ".//h3").get_attribute("textContent") 24 src = img.get_attribute("src") 25 responce = requests.get(src) 26 with open('ポケモンの日常(生活)/' + '{}.jpg'.format(name), "wb") as f: 27 f.write(responce.content) 28 29 driver.close() 30 driver.quit() 31 32 33if __name__ == '__main__': 34 main()
どういうふうにフォーマットしたいのか詳しく説明しよう
質問文は編集できるんで、そっちに説明を書いてください
何に困っているかが伝わってないです。
こうなるのを期待して、こういうコードを書いたけれど、期待に反してこうなったorエラーが出て動かない
という書き方をしてもらえるといいと思います。
質問が不十分で申し訳ありませんでした。
追記したので、回答いただけると嬉しいです。
>>> print('{}.jpg'.format('aaa:bbb'))
aaa:bbb.jpg
>>> print('{}.jpg'.format('aaa"bbb'))
aaa"bbb.jpg
再現しないので何かを勘違いしている/状況の認識の方が間違っていると思います。
解決のためには、実際のコードとデータとエラーメッセージが要りそうです。
エラーが出ているのは format ではなくて open の方ではないでしょうか。
format で作成したファイル名を一旦別の変数に入れるなどして動作確認してみましょう。
ちなみに Windows では ':' はファイル名に使用できません。
回答1件
あなたの回答
tips
プレビュー