くだすれPython(超初心者用) その27at TECH
くだすれPython(超初心者用) その27 - 暇つぶし2ch1023:デフォルトの名無しさん
15/11/14 16:08:44.41 eCyNFUOR.net
>>980
> 既存のファイル名を変更せずに
ここを諦めたら?変更しよう
> pythonにファイル名を引数で渡す場合、他に方法があるのでしょうか?
a.txt の各行にファイル名を書いておいて、
pythonから一行ずつ読めばいいじゃない。
with open("a.txt") as f:
 for line in f:
  filename = line.strip()
  f2 = open(filename)
  print(f2.read())
  f2.close()

1024:デフォルトの名無しさん
15/11/14 16:13:21.90 yJ0THCOh.net
>>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のコマンドプロンプトでも
バッチファイルでの出力に対しては正しくハートが表示されていますが
これはなぜですか?

1025:デフォルトの名無しさん
15/11/14 16:25:17.15 yJ0THCOh.net
>>983
変更は無理です。商品名なので。
テキストファイル経由するにしても
結局別の言語なりでD&Dしたファイルパスをテキストに
出力する必要があるわけで…
IPythonならいけるのかなぁ…
概要見た限


1026:りpythonは記述が簡単でいいなって思ったんだけど 実践すると、まさか、こんなところで躓くとは 今後Webページの情報も取得したいと思ってたけど また文字コードに悩まされそうだし、やめとこうかな



1027:デフォルトの名無しさん
15/11/14 16:35:01.68 eCyNFUOR.net
python自体は簡単だよ、開発効率良いよ
業務で使うんだったら金払って仕事として誰かに依頼するんだね
これで表示されるファイル名を足掛かりに頑張るんだね
import fnmatch
import os
for filename in os.listdir('.'):
 if fnmatch.fnmatch(filename, '*'):
  print filename
駄目だったら諦めろ

1028:デフォルトの名無しさん
15/11/14 16:36:20.91 EX5Vv4Gf.net
コマンドプロンプトも内部的にはUnicodeなんでね…コードページは入出力時に使われるだけじゃない?
Python2はマルチバイト文字セットなんでsys.argvからはエンコード失敗後しか取れない
Unicode文字セット対応のPython3を使うか、2ならctypesからGetCommandLineWとCommandLineToArgvWを使うとかかな

1029:デフォルトの名無しさん
15/11/14 18:10:26.12 yJ0THCOh.net
>>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度と使わない

1030:デフォルトの名無しさん
15/11/14 18:24:13.20 3qZz0Yz4.net
文字化けの回避方法はある
PYTHONIOENCODING環境変数にUnicodeを指定して出力はファイルへリダイレクトする
argvがどうなるかは分からん
set PYTHONIOENCODING="utf-16"
c\:python34\python.exe -c "print('\u2665')" >out.txt
notepad out.txt

1031:デフォルトの名無しさん
15/11/14 18:24:19.89 OtdRrL2O.net
ハートを商品名に使ってる会社もクソだが、構成してる社員もクソみたいだな

1032:デフォルトの名無しさん
15/11/14 19:05:46.61 yJ0THCOh.net
いやもう2はアンインストールして3.5いれたわ
コマンドライン引数の問題もあっさりクリア
これは楽ちん、最初からこっちにしとけばよかったわ

1033:デフォルトの名無しさん
15/11/14 20:12:05.26 eCyNFUOR.net
えらいっ。

1034:デフォルトの名無しさん
15/11/14 20:33:56.54 yJ0THCOh.net
やりたかったことがやっとできた
zip解凍>画像処理>zip圧縮
しかも3.5-64bitにしてPillowで画像処理やったら
2と同じコードなのに4倍も速くなった!
4k画像なのに0.1秒もかからない
なんでこんなに違うんだ?
未だに2を勧める意味がわからんわ
ほんと騙された
C#と比べたらかなり簡潔でわかりやすいコーディングができるなあこれ
DB操作はEFが圧倒的に楽だからC#でやるとして
あとはスクレイピングツールとファイル仕分けツールだなー

1035:デフォルトの名無しさん
15/11/14 20:34:51.64 Jkl9KIFo.net
茶番劇やないかw

1036:デフォルトの名無しさん
15/11/14 22:25:54.61 duU50ZfM.net
unicodeファイル名でオレも昔かなりはまったな
解決したようでよかった

1037:デフォルトの名無しさん
15/11/14 22:55:21.87 0kN6s8T8.net
全部C#でやりゃいいじゃん…文字コードの問題に引っかかることなんかないぞ

1038:デフォルトの名無しさん
15/11/14 23:18:05.48 duU50ZfM.net
そりゃ分かるけど
おまえはもっかいスレタイ読んどけよw

1039:デフォルトの名無しさん
15/11/14 23:22:13.37 hqNg22Fn.net
numbers=[1,2,3,4,5]
def foo(*args):
for i in args:
print(i)
結果:[1,2,3,4,5]
これを
結果:1
2
3
4
5
にするにはどうすればいいですか?

1040:デフォルトの名無しさん
15/11/14 23:34:08.80 /ADqMz2d.net
>998
def f(*args)

def f(args)
にすればいい。

1041:デフォルトの名無しさん
15/11/15 00:45:09.16 D/e506/x.net
次スレは?

1042:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

1043:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch