83678


pythonを使って、Chrome上でHTMLファイルを表示しています。  
HTMLファイルのパスに"#"があると、手動で開く時は問題がないのに、pythonからですと、  
ファイルにアクセスできませんとChrome上で表示されてしまいます。  
"#"をパスから取り除くと、pythonからちゃんと開けます。

pythonでは、ファイルパスに”＃”が含まれている時は何か特別な書き方があるのでしょうか？  
それとも、使えない文字でしょうか？  
もし、使えない文字でしたら、他にも使ってはいけない文字(Windowsでファイル名に使えない文字を除く)があるのでしょうか？

よろしくお願いします。

環境  
Python 3.9.6  
selenium 3.141.0  
Chrome 96.0.4664.45  
ChromeDriver 96.0.4664.45  
windows10


CC BY-SA 4.0
2021-11-17T09:46:54.863
83675
2021-11-19T04:17:38.457
48514
question
python html selenium
pythonを使ってChrome上でHTMLファイルを開く


マイクロソフトのサイトによれば下記の文字が使用禁止とされています  
<https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file>

[code]

    < (less than)
    > (greater than)
    : (colon)
    " (double quote)
    / (forward slash)
    \ (backslash)
    | (vertical bar or pipe)
    ? (question mark)
    * (asterisk)
    
[/code]

更にWindowsでは上記に加えて、OSのデフォルト設定言語によりUTF-8との変換の関係で各種文字に関するトラブルが発生します。(詳細は割愛します)

加えて、ブラウザで表示との事で  
「URLにおける使用可能文字」はまた別の取り決めがあります。  
こちらは「英数字 + `$-_.+!*'(),`」のみと覚えておけばだいたい大丈夫です。

( 詳細は <https://www.ietf.org/rfc/rfc3986.txt> や  
<https://stackoverflow.com/questions/1856785/characters-allowed-in-a-url> )

特にご指摘の `#` はURLにおいてページ内ジャンプ要素を表す特定の意味が存在しますので、  
ファイル名やパスの一部に使うことは不可能です。  
(厳密に言えばURLエンコードなど回避策はありますが、それを前提にしない方がよろしいでしょう)

さて「使えない文字」を全部覚える(ブラックリスト法)は正直ちょっと大変です。

ホワイトリストとして【「英数字 + `._-`」だけ使う
([posix3.282](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_282))】を徹底した方が  
事故が無くて良いかと思います。


CC BY-SA 4.0
2021-11-17T10:23:32.970
83678
2021-11-19T04:17:38.457
2021-11-19T04:17:38.457
32676
32676
83675
answer