- くだすれPython(超初心者用) その27©2ch.net
972 :デフォルトの名無しさん[sage]:2015/11/14(土) 01:21:00.91 ID:yJ0THCOh - cd /d %~dp0
d:\Python27\python.exe test.py %1 このバッチファイルに?.txtというファイルをドロップすると コマンドプロンプトには >d:\Python27\python.exe test.py d:\?.txt という風にちゃんと?.txtと表示されますが バッチファイルを d:\Python27\python.exe test.py ?.txt と書き換えて保存しようとするとunicode文字列があると表示されて unicodeで保存するかの選択肢が出ます 保存して実行すると >d:\Python27\python.exe test.py d:\ 笑、.txt こんな感じで文字化けします コマンドプロンプトのコードページはshift-jisなのに unicodeである?が表示されるのはなぜでしょうか? 最終的にはバッチで取得したファイルをpythonで取得して ファイルの存在チェックをしたいんですが print sys.argv[1] とすると?.txtと表示されます 文字コードで躓いてしまって混乱してます どなたかお助けください vs2015+python2.7.3
|
- くだすれPython(超初心者用) その27©2ch.net
973 :デフォルトの名無しさん[sage]:2015/11/14(土) 01:25:36.97 ID:yJ0THCOh - すみません。こちらでも文字化けした
(ハート)の部分はハートの機種依存文字です cd /d %~dp0 d:\Python27\python.exe test.py %1 このバッチファイルに(ハート).txtというファイルをドロップすると コマンドプロンプトには >d:\Python27\python.exe test.py d:\(ハート).txt という風に(ハート).txtと表示されますが バッチファイルを d:\Python27\python.exe test.py (ハート).txt と書き換えて保存しようとするとunicode文字列があると表示されて unicodeで保存するかの選択肢が出ます 保存して実行すると >d:\Python27\python.exe test.py d:\ 笑、.txt こんな感じで文字化けします コマンドプロンプトのコードページはshift-jisなのに unicodeである?が表示されるのはなぜでしょうか? 最終的にはバッチで取得したファイルをpythonで取得して ファイルの存在チェックをしたいんですが print sys.argv[1] とすると?.txtとなりうまく表示されません 文字コードで躓いてしまって混乱してます どなたかお助けください vs2015+python2.7.3
|
- くだすれPython(超初心者用) その27©2ch.net
980 :973[sage]:2015/11/14(土) 14:51:46.82 ID:yJ0THCOh - 解決策はないということなんでしょうか?
これから作るファイルなど、変更可能ならもちろん機種依存文字は使いませんが 既存のファイル名を変更せずにwindows上で使えるファイル名なら どれでも読めるようにしたいんですが、不可能ですか? コマンドプロンプトを使うなとのことですが pythonにファイル名を引数で渡す場合、他に方法があるのでしょうか?
|
- くだすれPython(超初心者用) その27©2ch.net
984 :デフォルトの名無しさん[sage]:2015/11/14(土) 16:13:21.90 ID:yJ0THCOh - >>981
reload(sys) sys.setdefaultencoding('cp932') enc = 'shift-jis' sys.stdin = codecs.getreader(enc)(sys.stdin) sys.stdout = codecs.getwriter(enc)(sys.stdout) sys.stderr = codecs.getwriter(enc)(sys.stdout) if __name__ == "__main__": str=sys.argv[1] if(os.path.exists(str)): print "true" else: print "false" print type(str) print str このようにしても、printした文字列は?.txtになって文字化けしますし ファイルの存在もfalseになります どうすればいいでしょうか? >>982 コードページがshift-jisのコマンドプロンプトでも バッチファイルでの出力に対しては正しくハートが表示されていますが これはなぜですか?
|
- くだすれPython(超初心者用) その27©2ch.net
985 :デフォルトの名無しさん[sage]:2015/11/14(土) 16:25:17.15 ID:yJ0THCOh - >>983
変更は無理です。商品名なので。 テキストファイル経由するにしても 結局別の言語なりでD&Dしたファイルパスをテキストに 出力する必要があるわけで… IPythonならいけるのかなぁ… 概要見た限りpythonは記述が簡単でいいなって思ったんだけど 実践すると、まさか、こんなところで躓くとは 今後Webページの情報も取得したいと思ってたけど また文字コードに悩まされそうだし、やめとこうかな
|
- くだすれPython(超初心者用) その27©2ch.net
988 :デフォルトの名無しさん[sage]:2015/11/14(土) 18:10:26.12 ID:yJ0THCOh - >>986
それも文字化けしてます 意図的には文字化け以外をマッチで取得して…的なことですか? 正確性に欠けると思うんだけど この文字列問題さえなければなぁ、確かに色々手軽なのに f = codecs.open('pyfilename.txt', 'w',enc2) # 書き込みモードで開く for filename in os.listdir('.'): if fnmatch.fnmatch(filename, "*"): f.write(filename) # 引数の文字列をファイルに書き込む f.close() これもUnicodeDecodeError なんで?内部でUnicode使っているんじゃないの? もうね、訳わかりません。文字列使うとどれもこんな感じ >>987 コードページに関係なく臨機応変にunicode文字も出力してる感じなんですかね 結局sys.argvでも上記のでもやっぱり文字化け あらゆるデコード、エンコード試したけど、ハート文字だけ文字化け もうpythonで取得している時点で文字コードが壊れてるとしか思えんわ 半日ずっとこんなつまらんところで足踏みしててイライラするわ とりあえず、3かIPython試してみる 2はもう2度と使わない
|
- くだすれPython(超初心者用) その27©2ch.net
991 :デフォルトの名無しさん[sage]:2015/11/14(土) 19:05:46.61 ID:yJ0THCOh - いやもう2はアンインストールして3.5いれたわ
コマンドライン引数の問題もあっさりクリア これは楽ちん、最初からこっちにしとけばよかったわ
|
- くだすれPython(超初心者用) その27©2ch.net
993 :デフォルトの名無しさん[sage]:2015/11/14(土) 20:33:56.54 ID:yJ0THCOh - やりたかったことがやっとできた
zip解凍>画像処理>zip圧縮 しかも3.5-64bitにしてPillowで画像処理やったら 2と同じコードなのに4倍も速くなった! 4k画像なのに0.1秒もかからない なんでこんなに違うんだ? 未だに2を勧める意味がわからんわ ほんと騙された C#と比べたらかなり簡潔でわかりやすいコーディングができるなあこれ DB操作はEFが圧倒的に楽だからC#でやるとして あとはスクレイピングツールとファイル仕分けツールだなー
|