[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 18:56 / Filesize : 160 KB / Number-of Response : 749
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれPython(超初心者用) その4



1 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 19:25:51 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、
お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>950 辺りで

前スレ
くだすれPython(超初心者用) その3
pc12.2ch.net/test/read.cgi/tech/1232055225/

関連スレ
Pythonのお勉強 Part33
pc12.2ch.net/test/read.cgi/tech/1240678081/

561 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 22:08:13 ]
そういえば、
1桁〜9桁くらいの数字だけで構成された文字列が大量に格納されたリストって
全部をint型に変換してソートするよりも
全部を文字列のままzfillで0埋めしてソートした方が速かったんだが
そういうもんなの?

562 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 22:12:48 ]
今ジェネレータの意味がわかったw

関数系だとデフォで全部かYOって思ってわけわかめだったが、
こういう遅延評価ならわかりやすいな。俺でも使えそうだ。

563 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 07:40:35 ]
>>561
kwsk
or
source

564 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 10:55:54 ]
そりゃ文字列だったのをそのままソートと
文字列だったのを数値に変換してソートだと
数値変換の処理が余計なステップになるよね

565 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 12:56:06 ]
みんなエディタ何使ってるの?

566 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 13:00:11 ]
zfillで0埋めする処理は余計なステップにならないのか

567 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 14:05:01 ]
Pythonぐらい簡単でゲーム作るのに適した言語ない?

568 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 15:11:23 ]
sqliteで、最後に挿入した行のrowidを取得する方法ってないのでしょうか?
c/c++なら「sqlite3_last_insert_rowid」というAPIがあるのですが・・・

569 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 15:28:13 ]
cursor.lastrowid



570 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:36:57 ]
>>561
そりゃ少なくとも2倍以上メモリ消費してるしな

571 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:09:46 ]
>>567
RPGツクールに内蔵されたRubyだな。

572 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:01:12 ]
質問なんですが

Linux上のPyGTK + Gladeで作ったアプリを
Pythonなどがインストールされていない
まっさらの状態のXPで動くようにしたいんですが
一緒にライブラリとかを同梱させれば可能になるんでしょうか?

可能ならそういった情報が乗ってるサイトとかを
教えてください

573 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 23:28:50 ]
py2exeじゃダメなん?

574 名前:デフォルトの名無しさん [2009/08/17(月) 14:06:43 ]
3.1.1 の Windows インストーラ版はまだかな〜

575 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:19:27 ]
Pythonの属性について。

モジュールオブジェクトやインスタンスオブジェクトobjに対して、
obj.x = x
のように、新しい属性をつけることはできますが、
文字列オブジェクト等でこれをやると、AttributeErrorが発生します。

これは文字列オブジェクト等の__setattr__()メソッドがエラーを発生するように定義してある、
という理解で良いのでしょうか?

576 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 23:02:27 ]
>>575
組み込みオブジェクトは実装上そうなってる。
実際
class myStr(str): pass
と継承すれば望みのことが可能。
Pythonはそのへんの美しさは二の次なので好き嫌いが分かれるかも。

577 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 23:06:48 ]
文字列はimmutableだし美しさを損なってるってほどでもないような

578 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 23:50:14 ]
>>576
理解力が悪くてすみません。
strを継承したクラスのインスタンスには属性を追加できる
→ __setattr__()は関係ないってことで良いでしょうか?

579 名前:575 mailto:sage [2009/08/18(火) 00:14:45 ]
連続で申し訳ないです。
今いろいろいじっていたら、そもそも組み込みオブジェクトが
__dict__属性を持っていないことがわかりました。

オブジェクトの属性は__dict__に格納されているみたいなんですが、
じゃあこの__dict__自身はどうなっているのでしょうか。
混乱してきましたw



580 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 13:21:44 ]
>>579
__dict__ は dict型のオブジェクトだよ。
属性の管理方法は、組み込み型ならC言語で自由に管理できるし、Pythonのclassで
__setattr__ を定義しない場合はデフォルトの __setattr__ が __slots__ か __dict__ を使って
管理する。

581 名前:575 mailto:sage [2009/08/18(火) 15:50:11 ]
>>580
ああ、なるほど__slots__ですか。
これを定義しておくと、これに格納されていない名前の属性は付けられなくなるんですね。
ありがとうございました。

582 名前:デフォルトの名無しさん [2009/08/18(火) 17:49:09 ]
# main.py
import mymodule
print mymodule.getmypath()

# mymodule/__init__.py
def getmypath():
  return __file__

引数等に何も渡さずにgetmypath()でmain.pyのファイルパスを取得する方法はありますか?
python2.5を使ってます

583 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 18:06:27 ]
os.fullpath(__FILE__)

584 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 18:35:37 ]
これでいいの?
sys._getframe().f_back.f_code.co_filename

585 名前:582 mailto:sage [2009/08/18(火) 20:25:52 ]
>>584
できました!ありがとうございます。


586 名前:586 [2009/08/19(水) 21:17:25 ]
はじめまして。

BeautifulSoupを使っていて、
<class 'BeautifulSoup.NavigableString'>をstrに
変換するにはどうすればよいのでしょうか?

587 名前:586 [2009/08/19(水) 21:42:58 ]
メソッドencodeを使ってもエラーになります。
<class 'BeautifulSoup.NavigableString'>オブジェクトから
1文字ずつとりだすとunicodeになるので、
無理やりunicodeに変換することはできました。
なので解決といえば解決なのですが、美しくないです…

588 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 02:06:21 ]
unicode(s)
str(s)


589 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 02:09:18 ]
unicode(s.prettify(), s.originalEncoding)



590 名前:デフォルトの名無しさん [2009/08/20(木) 05:33:30 ]
Pythonでは「文字列」と「ユニコード文字列」と「バイト列」
は異なるオブジェクトとして明確に区別されてるのでしょうか?

591 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 07:41:29 ]
2でも3でも文字列とバイト列は同じ
文字列リテラルとしてソースに書く場合はやや注意が必要

592 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 07:49:52 ]
>>591
いや違う
2: バイト列=文字列≠ユニコード文字列
3: バイト列≠文字列=ユニコード文字列

593 名前:590 [2009/08/20(木) 08:40:32 ]
>>592
なるほど,その説明はわかりやすい

encode とか decode とかのメソッド見たとき,
何から何へなんだよ〜元と先が指定できなきゃ
だめなんじゃね?って悩んだ.

594 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 10:59:28 ]
urllib.urlopenで読んできたHTMLをBeautifulSoupに渡すとunicodeにしてくれますが、
その中に囲み数字みたいな機種依存文字があるとencodeでeuc-jpとかにしようとすると
例外が発生しますよね?
これってみなさんどうしてます?


595 名前:デフォルトの名無しさん [2009/08/20(木) 12:37:08 ]
unicode-escape

596 名前:デフォルトの名無しさん [2009/08/20(木) 12:40:43 ]
encode('euc-jp', errors='replace')
encode('euc-jp', errors='ignore')
encode('euc-jp', errors='strict')

597 名前:デフォルトの名無しさん [2009/08/20(木) 12:57:40 ]
ttp://www.python.jp/doc/release/lib/string-methods.html
ttp://www.python.jp/doc/release/lib/codec-base-classes.html

598 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 14:13:08 ]
euc_jis_2004

599 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 14:47:56 ]
ttp://www.python.jp/doc/release/lib/standard-encodings.html



600 名前:594 mailto:sage [2009/08/20(木) 19:51:48 ]
ヒントありがとうございます。
色々試してみましたが、文字コード回りは今一つ良く分かりませんね。
みなさんのヒントとウェブ情報を参考にとりあえず次のようにしてみました。

html = urllib.urlopen(url).read()
html_coding = chardet.detect(html)['encoding'].lower()
soup = BeautifulSoup(unicode(html, html_coding, 'replace').encode('utf-8'))
text = soup......
print text.encode('euc-jp', 'replace')

単純にprintの時に text.encode('euc-jp', 'replace')とかだと、何故か全体がわけわからないコードになりました。
2.5.4でやってるんですが、3.xになるとこの辺もっとスッキリするんでしょうか。



601 名前:デフォルトの名無しさん mailto:  [2009/08/20(木) 22:08:07 ]
「Python 3.1.1」リリース
pc11.2ch.net/test/read.cgi/pcnews/1250773470/

602 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 07:36:16 ]
>>600

html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
text = soup......
print text.encode('euc-jp', 'replace')


603 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 07:38:11 ]
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
text = soup......
print unicode(text, soup.originalEncoding).encode('euc-jp', 'replace')

604 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 14:22:39 ]
あのLinux使ってる人が一行目に書くのはなんだ?

605 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 14:42:43 ]
shebang

606 名前:デフォルトの名無しさん [2009/08/23(日) 22:49:29 ]
はじめまして。
最近、pythonを始めました。 ipythonをとても便利に使っています。
ipythonに関して、一つ質問なのですが、代入式の場合に、評価の値が表示されるようにすることはできないでしょうか?

607 名前:デフォルトの名無しさん [2009/08/24(月) 13:03:36 ]
「はじめてのpython」で勉強しています
下記スクリプトを実行したとき、

Winで実行する場合とUbuntuで実行する場合とで
結果が違う(Ubuntuの場合はエラーになる)のですが
どうしてですか?
Ubuntuでエラーを解消するにはどうすればいいですか?

文字エンコード部分を変えたり消したりするのはやってみました。

#! /usr/bin/env python
# coding:shift_jis
while True:
str=input('> ')
print( str )
if str=='bye':
break


608 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 13:27:59 ]
raw_input() にすれば動くよ。たぶんwinのはpython3なんだろう。
その本がどちらを使ってるかわからないけど、個人的にはまだ2.xを使ったほうがいいと思うよ

python2のraw_input() == python3のinput()
python2のinput() == python3のeval(input())

609 名前:デフォルトの名無しさん mailto:  [2009/08/24(月) 23:54:44 ]
改行コード



610 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:17:27 ]
win32api を使いたいです
ctypes から、windll.[DLL名].[関数名] で呼べるのはわかったのですが、
引数が要求したり、関数が返してくるような定数(?)の実際の値は普通どう確認するものなんでしょうか

他言語から win32api を使った経験は無いです

611 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:29:15 ]
ttp://www.python.jp/doc/contrib/ctypes/tutorial_jp.html
ttp://www.python.jp/doc/release/lib/module-ctypes.html
ttp://www.ueblog.org/blog/entry/ctypesunlha/
ttp://moco.sakura.ne.jp/python/ctypes%E3%81%AEstructure%E3%81%AB%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B3%E3%83%94%E3%83%BC/

612 名前:610 mailto:sage [2009/08/25(火) 17:27:33 ]
えーと WM_CLOSE とかそういったものが定義されてないので、
その実際の値がわからないとそれを要求したり返したりする関数が使えないんです
それで、普通はどうするものなのかと思って質問しました

613 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 17:31:15 ]
少しぐらいならヘッダファイルから拾ってくれば済むけど
GUIまでやろうとするとものすごく大変な気がする

614 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 17:34:19 ]
MSDNでしらべる。Mingwのw32apiとかみる

615 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 17:45:43 ]
>>813
たまたま目に付いたものを書いただけで、今のところは GUI をやろうとしてるわけではないです

ヘッダファイル名でググって、定数名で検索掛けてコピペしてくればいいんですかね
他のコードからコピペして著作権的に大丈夫なんでしょうか

>>614
関数と、対応するDLLは、ググって出てきたMSDNのページを見てるんですが、定数が見つからないです
どこに何があるかいまいちわからない……

Mingwは調べてみます

616 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 20:25:48 ]
pywin32 の win32con.py

617 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 20:50:24 ]
>他言語から win32api を使った経験は無いです

618 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 21:41:44 ]
>>616
おお、大抵の場合はこれで大丈夫そうです

というよりctypesじゃなくてpywin32でwin32apiを呼べるみたいですが、その方がいいんでしょうかね
でもpywin32のヘルプ読んでもどこに何があるのかわかりづらい……

>>617
一応書いておいた方がいいかなと


これから先、どのapiを使うかわからないのであえて書かなかったのですが、
DDEクライアントを書いてました
win32conにddeml.hの定数が見当たらなかったので、
Google先生にお願いしてヘッダファイルからコピペしたところ、とりあえず動きました
(コピペして大丈夫なんでしょうか)

pywin32にddeなるモジュールがあるようですが、使い方がさっぱりなので見なかったことにします
みなさん回答ありがとうございました
今回の件とは別ですが、>>611も参考になりました

619 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 22:00:04 ]
>DDEクライアント

win32com



620 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 22:58:40 ]
COMはDDEとは別物じゃないですか?

621 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 23:05:06 ]
それはMSに言っといてくれ
死語だけでもWindows DNAとかChromeEffectsとかいくらでも出てくる

622 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 23:34:06 ]
>>619を読んで、win32comとDDEクライアントの関係がわからなかったので>>620を書いたのですが……

623 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 01:55:48 ]
COMはOLEクライアント

624 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 04:10:26 ]
拡張子は opyで

625 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 21:05:40 ]
.pyoのほうがいい

626 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 08:19:35 ]
そのうち2.xようと3.xように
.pyo2とかになるのか

627 名前:デフォルトの名無しさん [2009/09/01(火) 22:46:42 ]
Windows環境でもPyreadlineをインストールしていれば
cmdモジュールのデフォルトでbash-like動作が有効になると思ってたんですが
普通に“^A”などと表示されてしまいます。
IPythonでは補完が効くので、cmdモジュールの使い方が間違ってるんだと思いますが
公式サイトのリファレンスではCmd.cmdを継承したクラスを作って
引数無しでインスタンスを作成するだけのように読めます。

何が間違ってるんでしょうか?

628 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 07:39:13 ]
助けてください・・・
これからPythonを勉強しようと思ってるのですが、それ以前に「パスを通す」
ということができません。
Windows XP で、Python2.6.2 をインストールしたんですけど、初心者用の
サイトにある「パスの設定」というのを見ながらやっても
[操作可能なプログラムまたはバッチ ファイルとして認識されていません]と
でてしまい困っています・・・。どうすればパスを通せるのか教えていただけ
ないでしょうか。よろしくお願いします。

629 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 08:12:03 ]
了解



630 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 08:33:11 ]
スレ違い
パソコン入門スレとかにいってこい

631 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 09:24:33 ]

PATHの通し方すら教えられない。
しょせんPyヲタなんて、この程度。

632 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 09:51:29 ]
逃げた?

633 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 09:53:19 ]
>>628
autoexec.bat あたりを弄ったのかな?それはWindows98時代のやり方で、
Windows2000以降ならGUIで設定できる。
ttp://www.daikichi.net/books/lecture_java/setting_jdk.html

634 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 10:08:32 ]
言っちゃった…。

俺はあほの相手するのは疲れるんでぐっとこらえたんだけど。

635 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 14:15:51 ]
>>628
>>633が答えてくれてるけど
うまくいかなかったらまた聞いてくれ

636 名前:628 mailto:sage [2009/09/03(木) 19:12:06 ]
>>629
>>630
すみません。スレ違いという事すら気づきませんでした...。
>>631
ごめんなさい..。私が悪いんです。
>>632
>>633
ご親切に答えてくれて、ありがとうございます。教えて頂いた
ttp://www.daikichi.net/books/lecture_java/setting_jdk.html も、見てみた
のですが、ダウンロードし直したら無事にパスが通りました。本当に、
ありがとうございました。
>>634
ごめんなさい、ほんとに私はアホです。
>>635
ありがとうございます。結局、何が原因だったのかわからないのですが
どうにかパスの設定はできました。

637 名前:デフォルトの名無しさん [2009/09/03(木) 21:35:11 ]
>> 607
一行目の指定宣言ですが?

#! /usr/bin/env python

/* man env 引用 */

NAME
env -- set and print environment

余り どの様な形式の基礎かが理解 出来ないのですが…
この部分の基礎宣言の説明をして頂けますか?

638 名前:デフォルトの名無しさん [2009/09/03(木) 21:51:11 ]
ピートンっておぼえたほうがいいかな

639 名前:BBS戦士ジョソコイダーGID@愛をください [2009/09/03(木) 21:52:46 ]
ジョソコイダーを遊園地に連れてってって



640 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 22:08:29 ]
>>637
その一行目は shebang という
二行目以降を入力として shebang に指定したコマンドを実行する

ややこしい話をすると
shebang に指定されたコマンドを実行するのはシェルでなくカーネルの仕事
シェルは環境変数PATHを知っているけど、カーネルは知らないので
原則 #!/usr/bin/python などではなく #!/usr/bin/python のように書く必要がある

ただこの方法だと他のマシンでの python インタプリタの場所が
/usr/local/bin/python だった場合に動かないので
env コマンドに環境の設定と python の実行をお願いする

641 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 22:09:26 ]
o 原則 #!/usr/bin/python などではなく #!/usr/bin/python のように書く必要がある
x #!python などではなく #!/usr/bin/python のように書く必要がある

642 名前:デフォルトの名無しさん [2009/09/03(木) 22:33:38 ]
>>607

/* Line 2 */
# coding: 'Shift_JIS'

これで 通りますが… 何をする Program ですか?

643 名前:デフォルトの名無しさん [2009/09/03(木) 22:38:14 ]
>>642 plus
失礼…
>>640 を読めずに書き込んだので…

644 名前:デフォルトの名無しさん [2009/09/03(木) 22:48:02 ]
>>640
読んだのですが?
文字列を入れても Syntax Error に為りますが?
直接 打ち込んでの作業では無いと云う事か…

645 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 23:12:28 ]
まずは日本語の構文をマスターしてからのほうが
いいと思うんだ・・・

646 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 23:17:30 ]
>>644
shebang を使うのはファイルに保存したスクリプトを
% python scriptname
ではなく
% chmod +x scriptname
% ./scriptname
のように実行したい場合
対話型プロンプトではそもそも必要ない

よくわからなかったら、慣れるまで
* スクリプト内でASCII文字だけ使うようにする
* 実行する際は % python scriptname
* 対話型プロンプトは使わない
そうすれば #!/usr/bin/env python や # coding: sjis を書く必要が無くなる

あとできればメール欄に sage って入れて

647 名前:デフォルトの名無しさん [2009/09/04(金) 00:16:11 ]
>>646 本人がレスして居るのでしょうか?
# coding: Shift_JIS
は 始めから省略が出来たと思いましたが…
書く必要性 1: どの coding: を使用して居るかを明確にする為
記憶では二行目は かなり about に書く事が出来る でしたか?
prompt を使用しないですか…
script が まだ入力待ちの状態だったと理解して居りますが?

>>607
「はじめてのpython」で勉強しています
下記スクリプトを実行したとき、
Winで実行する場合とUbuntuで実行する場合とで
結果が違う(Ubuntuの場合はエラーになる)のですが
どうしてですか?

648 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 01:01:52 ]
どんなエラーが出たのか書けよ

649 名前:デフォルトの名無しさん [2009/09/04(金) 01:05:22 ]
OSが違うからです



650 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 01:06:22 ]
>下記スクリプト

???

651 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 01:12:46 ]
異なる環境で動かすことを考えているなら、 coding指定は必ず書いておけ。

標準入力も、inputに頼らず、codecs.getreader()で、
エンコード指定して、sys.stdinからファイル入力として扱うほうが、
トラブルは少ないかもしれない。

652 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 01:13:36 ]
その変な日本語どうにかしてよ

653 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 01:20:28 ]
str = codecs.getreader('UTF-8')(sys.stdin)

654 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 01:23:08 ]
str = codecs.getreader('UTF-8')(sys.stdin).read()

655 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 01:25:03 ]
っつーかstrをへんこうしたらなにがおこるんだ?



656 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 01:56:11 ]
うちゅうのほうそくがみだれる

657 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 01:57:50 ]
変更というよりは邪魔して見えなくしてるだけだ

__builtins__.str

658 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 06:27:01 ]
py3なら文字コード余裕でした。

659 名前:デフォルトの名無しさん [2009/09/04(金) 13:46:11 ]
拙もはじめてのpython3で勉強してます。
本に載ってた下記スクリプトが、WinでもLinuxでも動きませんでした。

本のミスでしょうか?

■エラー内容:
print( gcd(int(sys.argv[1]),int(sys.argv[2])) )
IndexError: list index out of range

■スクリプト:
#!usr/bin/env python
# coding:shift_jis

import sys

def gcd(m,n):

if n>m: m,n=n,m
while n>0:
m,n=n%m
return m


if __name__=='__main__':
print( gcd(int(sys.argv[1]),int(sys.argv[2])) )



660 名前:659 [2009/09/04(金) 13:47:43 ]
カキコしたらインシデントがなくなってしまいました。修正します。

■スクリプト

#!usr/bin/env python
# coding:shift_jis

import sys

def gcd(m,n):

 if n>m: m,n=n,m
  while n>0:
   m,n=n%m
  return m


if __name__=='__main__':
 print( gcd(int(sys.argv[1]),int(sys.argv[2])) )

661 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 14:08:36 ]
>>660
sys.argv[1] と sys.argv[2] はそれぞれ、
python gcd.py 3 5 (もしくは ./gcd.py 3 5) としたときの 3 と 5 が入ります。
引数をつけずにプログラムを実行されたのではないでしょうか?

662 名前:659 [2009/09/04(金) 16:00:32 ]
>>661

そのとおりでした。ありがとうございます。

663 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 16:15:57 ]
WindowsでPython 2.6.2を使って機種依存文字を処理しようと思ったんですが、
cp932でエンコードして書き出すとき、PythonはNEC選定IBM拡張文字を優先して使うようなんです。
(例えば「掾vの場合、fbb9ではなくee9d)

できたらIBM拡張文字の方で書き出せるようにしたいんですが、何かいい方法があるでしょうか?

664 名前:デフォルトの名無しさん [2009/09/04(金) 16:48:19 ]
>>663
Text 文書を保存して その儘 特定機種で Text を読み込むと どの様に為りますか?

665 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 16:53:22 ]
>>> u"ケ".encode("mbcs")
'\xfb\xb9'
>>> u"ケ".encode("cp932")
'\xee\x9d'

666 名前:デフォルトの名無しさん [2009/09/04(金) 17:03:13 ]
>>664 plus
否… 表現が悪かった様で… 片方の機種で その文字を Text に保存して
もう片方の機種で その Text を読み込むと どの様に為りますか?

667 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 17:19:25 ]
>>665
どうもありがとうございます。
何となく、Windowsではcp932を選べばいいのだと勝手に思い込んでました。

>>666
すみません、勉強不足でよく理解できていないんですが、cp932はWindows以外の環境も考慮してああなっているということでしょうか? もっとよく調べてみます。

668 名前:デフォルトの名無しさん [2009/09/04(金) 17:32:22 ]
うにcode か… 素晴らしいな…

669 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 18:33:07 ]
>インシデント



670 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 22:10:56 ]
>>665
なんなのその顔文字ふざけてんの?

671 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 22:18:51 ]
u('-')

たまに出てくるけどかわいい

672 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 23:06:05 ]
>>670
NEVADA

673 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 00:12:56 ]
>>671
心の汚れた環境では見れないらしい…

674 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 22:02:15 ]
osごとに異なるモジュールをインポートするにはどうしたらいいのでしょうか?
C言語で言うifdefみたいなことがしたいのですがうまくいきません・・

675 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 22:03:45 ]
import sys
sys.platform

676 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 22:18:03 ]
>>675
ありがとうございます
sys.platformで取り込むモジュールを振り分けられました
importは先頭に書くものだと思っていました。。

677 名前:デフォルトの名無しさん [2009/09/06(日) 00:20:31 ]
普通はtry: import hoge except ImportError: import fugaみたいにするんじゃなかったっけ?

678 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 00:36:49 ]
異なるシステムでもImportErrorでない書き方できるからsys.platform使う方が無難

679 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 00:42:55 ]
sys.platformというのは初耳だわ
os.nameよりも詳しいのかな



680 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 00:45:20 ]
platformモジュールとか初めて知った

681 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 01:05:04 ]
>>680
そういえばそんなのもあったね。程度にしか使われてないよな

sysはビルトインの標準モジュールだから絶対に読み込めるという理由もあるかも
osはパス通ってないとimportできないし

682 名前:デフォルトの名無しさん [2009/09/06(日) 18:33:13 ]
スクリプトでテキストを立ち上げたり、IEを起動させたりは可能ですか?

683 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 18:40:20 ]
yes you can

684 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 23:46:18 ]
いろいろ試したんだけどwindowsでparamikoが使えない。
これは使えないでOK?


685 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 23:50:05 ]
Windowsでparamikoつかえるよ?
bazaarなんてWindows用のデフォルトのsshクライアントがparamikoだよ。

686 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 00:08:23 ]
>>685
俺にとってあんたは神様だ。
設定しかたを教えてくれ!

687 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 00:51:13 ]
>>685
1. paramiko-1.7.5.zip をダウンロード
2. 適当なディレクトリに解凍
3. コマンドプロンプト開いて 2 のディレクトリに cd で移動する
4. python setup.py build
5. python setup.py install
これを順にやっていって、どこで引っかかるか教えて。

今やってみたら、依存ライブラリのpycryptoが手元の環境でインストール済みだったから
すんなりインストール終わった。
ひょっとしたらpycryptoインストールするときに拡張モジュールのコンパイルが必要かも
知れないから、Pythonのバージョンに対応するコンパイラをもっていない場合は
mirror.cameronbergh.com/pycrypto-win/
から対応するパッケージをダウンロードするといいよ。

688 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 00:54:35 ]
親切にありがとう!
paramiko-1.7.4でやったらすんなりとおった。

689 名前:デフォルトの名無しさん [2009/09/10(木) 16:31:07 ]
n(適当な自然数)次元の実数値関数fを定義するときに
f = lambda x : (x**2).sum()
とか書いてあるコードがあって、意味がわかりません。

lambda式がわからないのではなくて、後ろについてる.sum()がわかりません。
インタプリタで上記定義をして、f(x=1.0)とかf(x=[1.0,2.0])とかやってみると、
sum()についてのattribute errorが出ます。

よろしくお願いします…。



690 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 16:33:31 ]
xがnumpyのarrayなんじゃない?

691 名前:689 [2009/09/10(木) 16:43:10 ]
>>690
それでした!
どうもありがとうございました。

692 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 22:49:04 ]
BitTorrent以外でpythonで実装されたクライアントソフトあるいはスタンドアローンソフトって何がありますか?
砕けた言い方をすると、pythonで実装されていて拡張子がexeなそれなりに有名なソフトって何がありますか?

693 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 22:59:58 ]
BTはPythonやめたんじゃなかったっけ?

694 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 23:03:43 ]
ttp://wiki.python.org/moin/Applications

695 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 15:52:44 ]
拡張子がexeである必要がよくわからないけど、
bzr, mercurial といったVCSもそうだし、
Editra, Dropbox, TaskCoach, 他にもいろいろあるぞ。
LinuxにいったらさらにPython製デスクトップアプリだらけ。

696 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 18:57:53 ]
yum


697 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 18:59:20 ]
とりあえず2chviewerでも作って公開すれば有名になれるんかな

698 名前:デフォルトの名無しさん [2009/09/14(月) 05:56:06 ]
>684
これかも
ttp://d.hatena.ne.jp/lolloo-htn/20090801/1249085650

699 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 09:44:16 ]
bugs.launchpad.net/paramiko/+bug/411910
へぇ。



700 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 12:47:58 ]
>>692
portage, samuraix

701 名前:デフォルトの名無しさん [2009/09/15(火) 21:14:28 ]
wikipediaのPythonのページに
「多くの異なる言語で書かれたモジュールをまとめるグルー言語」
とありますが、これは複数のプログラミング言語で書かれたモジュールを
まとめられるということでいいのでしょうか?

702 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 08:06:50 ]
>>701
文章を途中で切るよな。

703 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 09:50:28 ]
ワロタ

704 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 03:21:16 ]
lambda : 1 + 2
が良くて
lambda : print "hoge2"
がダメな理由って何故ですか?

705 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 03:35:29 ]
lambda式には式(expression)しか書けないから。printは文(statement)。

706 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 03:43:40 ]
lambda : sys.stdout.write("hoge2\n")

707 名前:704 mailto:sage [2009/09/24(木) 04:34:27 ]
ありがとう
・・・Pythonってそう言うのを区別するのか・・・先は長そうだ orz

708 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 06:08:10 ]
python3ではprintは関数だよ^^

709 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 07:27:03 ]
Pythonで
print "x=#{x}\n" if DEBUG (Rubyの例)
みたいに1行で完結させる書き方って可能ですか?
同じ物をPythonで書くと
if DEBUG:
print "x="+str(x)
となると思いますが出来ればデバッグメッセージごときに2行は使いたくない・・・



710 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 08:07:41 ]
if DEBUG: print "x="+str(x)
だが、logging使え。

711 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 10:34:36 ]
if DEBUG:
print "x="+ str(x)

712 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 10:36:08 ]
>>711 ミスったので見なかったことに

713 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 11:42:46 ]
logging.logger

714 名前:デフォルトの名無しさん [2009/09/24(木) 13:37:14 ]
pythonjp.sourceforge.jp/dev/library/functools.html
ここにある
def partial(func, *args, **keywords):
という書き方に出てくるCのポインタみたいな記号(*args,**keywords)ってどういう意味ですか?

715 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 13:43:23 ]
pythonjp.sourceforge.jp/dev/tutorial/controlflow.html#tut-keywordargs

716 名前:デフォルトの名無しさん [2009/09/24(木) 13:53:55 ]
ありがとござます

717 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 17:46:57 ]
PILのpython3対応はまだか!

718 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 22:47:32 ]
>>712
え?どこどこ?

719 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 23:06:30 ]
Python的には字下げだろう。



720 名前:デフォルトの名無しさん [2009/09/27(日) 04:43:59 ]
一度定義した変数を消去することは可能ですか?

python3.0で、
print = 5
とするとprintという名前の変数に5が代入されたのですが、
そのあと元のprintという関数を使いたい場合はどうすればよいのでしょうか?

721 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 04:53:34 ]
__builtins__.print

もしくは

del print

722 名前:720 mailto:sage [2009/09/27(日) 05:15:58 ]
>>721
ありがとうございました。

723 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 11:24:07 ]
urllib2でkeep-alive出来ない。助けて

policy = cookielib.DefaultCookiePolicy( rfc2965=True, strict_ns_domain=cookielib.DefaultCookiePolicy.DomainStrict)
cj = cookielib.LWPCookieJar(cookie_jar_path, False, policy)
cjhdr = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cjhdr, RefererAddHandler())
opener.addheaders = [
 ('User-agent', 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)'),
 ('Connection','Keep-Alive')
 ('Keep-Alive'','300')
]
r = opener.open( uri )
rinfo = r.info()
for key in rinfo.keys() :
 print h, rinfo[key]

## Referer を Autoでつける為のハンドラ ########
class RefererAddHandler (urllib2.BaseHandler) :
 def http_request(self, req) :
  req.add_header("Referer", req.get_full_url())
return req

---------------------------
firefoxなんかでレスポンスヘッダを見ると、
 Connection: Keep-Alive
と出てる。でも上記コードでは
 Connection: Close
になる。なにか足りないですか?

724 名前:723 mailto:sage [2009/09/27(日) 11:26:39 ]
訂正:
 ('User-agent', 'User-Agent: Mozilla/5.0 〜略)
の箇所は
 ('User-agent', 'Mozilla/5.0 〜略)

725 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 11:31:06 ]
HTTPヘッダでkeep-aliveするようにしても
urllib2がそれを想定してないからうまく動かなかったような
ソース読んで絶望した記憶がある

urllib2 keep-alive でぐぐってみるといいんじゃないか

726 名前:723 mailto:sage [2009/09/27(日) 11:34:14 ]
>>725
ありがとう。ここのサイトのをやってみる!
python.blog-slime.com/function/urllib/


727 名前:723 mailto:sage [2009/09/27(日) 11:36:47 ]
↑はurllibだった。下のサイトのを拝借するのが一番楽そうですね。d
memo.jj-net.jp/18


728 名前:723 mailto:sage [2009/09/27(日) 12:03:05 ]
ちなみに・・・

urllib2だとcookieの自動処理が容易に出来るけど、keep-aliveが出来ない
urllib だとcookieの自動処理を容易に出来ないが、keep-aliveは出来る
(www.python.jp/doc/2.4/lib/cookielib-examples.html見ると、cookielibはurllib2での使用を想定している?)

HTTP/HTTPSをやる上で、比較的高機能で知られたライブラリってありますか?
(PerlのLWP、JavaのCommons/HttpClientみたいな)

729 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 18:42:43 ]
参考になるかどうかわからんけど2.6, 3.0系列の構成は

urllib-gsoc.blogspot.com/2008/06/urllib-package.html
www.python.org/dev/peps/pep-3108/#http-package
www.python.org/dev/peps/pep-3108/#urllib-package

こんなかんじらしい…



730 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 18:45:28 ]
一番下の example が参考になるかも試練

docs.python.org/dev/3.0/library/http.cookiejar.html

731 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 18:53:41 ]
おまいらおちつけ
>>723のコードはPython2系列だ

732 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 19:01:48 ]
https://fisheye.toolserver.org/browse/~raw,r=6953/pywikipedia/branches/rewrite/pywikibot/comms/threadedhttp.py

Bingo? 直感で
実は keep-alive の意味がよくわからないw

733 名前:723 mailto:sage [2009/09/27(日) 23:14:59 ]
みんな、アドバイスありがとう!
python 2.4 に拘っている訳ではないんだ。
v3.0に上げて >>730のurllibとhttp.cookie_jarでやってみる。

>>732
ありがとう!参考にさせてもらうぜぃ

734 名前:723 mailto:sage [2009/09/28(月) 01:08:16 ]
python3.1 ってif,for,printが式になってて、今まで書いてたコードが動かねーおwww
なんかLISPっぽいね。
2.6と変わりすぎててわらってしまったw


735 名前:723 mailto:sage [2009/09/28(月) 01:13:56 ]
ひとりごと多くてすまん
>>734は気にしないでくれ。勘違いだったお

736 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 02:44:31 ]
Twitterでやれ

737 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 14:47:48 ]
Tkinterについて質問です

from Tkinter import *

root = Tk()
sub_win = None

def button_callback(event):
global sub_win
print 'button down'
sub_win.destroy()

def message_window():
global sub_win
sub_win = Toplevel()
button = Button(sub_win, text='window close')
button.pack()
sub_win.bind('<Escape>', button_callback)
button.bind('<Button-1>', button_callback)

Button(root, text='about', command=message_window).pack()

root.mainloop()

以上のようなコートなのですが、ESCキーを押してもコールバック関数が呼ばれません
何故でしょうか?よろしくお願いします

738 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 15:28:31 ]
フォーカスの合ってるウィジェットにしか
イベントは送られない。

739 名前:737 mailto:sage [2009/09/28(月) 16:00:47 ]
レスありがとうございます
>>738
>フォーカスの合ってるウィジェットにしか
>イベントは送られない。
もうちょっと単純にしてみて

from Tkinter import *

root = Tk()

def esc_down(event):
print 'esc key down'
root.destroy()

button = Button(root, text='close')
button.pack()
button.focus_set()
button.bind('<Button-1>', esc_down)
button.bind('<Escape>', esc_down)

root.mainloop()

こういう事ですよね?
これの「button.bind('<Escape>', esc_down)」を「root.bind('<Escape>', esc_down)」
としてもきちんとコールバック関数は呼ばれます。
上のコードのTkをToplevelにしてもESCキーのイベントの補足は成功するようです
>>737みたいな形にするとうまく行かないです。よろしくお願いします



740 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 18:59:50 ]
UTF-8にエンコードする方法を教えて下さい。
例えばx = "あいうえお"のときyに"%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A"を代入したいんですが
どのようにすればいいでしょうか?

741 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 19:15:31 ]
元の文字列がShift_JISだと仮定

import urllib
x = 'あいうえお'
y = urllib.quote(x.decode('sjis').encode('utf8'))

742 名前:740 mailto:sage [2009/09/28(月) 20:07:56 ]
>>741
ありがとうございました、出来ました。

743 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 21:03:12 ]
>>737
好きなのをどうぞ

- 2つ目のウィンドウをクリックしてからEsc押す
- sub_win.focus_set()
- root.bind('<Escape>', button_callback)

744 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 03:25:29 ]
複数行の文字列xからどうすれば中身を1行ごとに分割して1つずつリストに代入させることが出来ますか?

745 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 03:40:05 ]
複数行の文字列をどういうデータ形式で持っているのかによる。

746 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 03:42:06 ]
"abc\ndef\nghi".split("\n")


747 名前:737 mailto:sage [2009/09/29(火) 03:59:51 ]
>>743
レスありがとうございます
2枚目のウインドウは作っただけではフォーカスは動かないのか・・・il||li ○| ̄|_
真ん中の方法を使わせて貰いました

748 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 04:04:20 ]
Tkinterについての質問です。
何らかのイベントが起きたときにフレームの内容を
丸ごと入れ替えるようなプログラムはどの用にする
ば書くことができますか?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<160KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef