トップページ > プログラム > 2015年11月14日 > yJ0THCOh

書き込み順位&時間帯一覧

4 位/197 ID中時間01234567891011121314151617181920212223Total
書き込み数0200000000000010201110008



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
973
くだすれPython(超初心者用) その27©2ch.net

書き込みレス一覧

くだすれ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#でやるとして
あとはスクレイピングツールとファイル仕分けツールだなー


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。