くだすれPython(超初 ..
640:デフォルトの名無しさん
09/09/03 22:08:29
>>637
その一行目は shebang という
二行目以降を入力として shebang に指定したコマンドを実行する
ややこしい話をすると
shebang に指定されたコマンドを実行するのはシェルでなくカーネルの仕事
シェルは環境変数PATHを知っているけど、カーネルは知らないので
原則 #!/usr/bin/python などではなく #!/usr/bin/python のように書く必要がある
ただこの方法だと他のマシンでの python インタプリタの場所が
/usr/local/bin/python だった場合に動かないので
env コマンドに環境の設定と python の実行をお願いする
641:デフォルトの名無しさん
09/09/03 22:09:26
o 原則 #!/usr/bin/python などではなく #!/usr/bin/python のように書く必要がある
x #!python などではなく #!/usr/bin/python のように書く必要がある
642:デフォルトの名無しさん
09/09/03 22:33:38
>>607
/* Line 2 */
# coding: 'Shift_JIS'
これで 通りますが… 何をする Program ですか?
643:デフォルトの名無しさん
09/09/03 22:38:14
>>642 plus
失礼…
>>640 を読めずに書き込んだので…
644:デフォルトの名無しさん
09/09/03 22:48:02
>>640
読んだのですが?
文字列を入れても Syntax Error に為りますが?
直接 打ち込んでの作業では無いと云う事か…
645:デフォルトの名無しさん
09/09/03 23:12:28
まずは日本語の構文をマスターしてからのほうが
いいと思うんだ・・・
646:デフォルトの名無しさん
09/09/03 23:17:30
>>644
shebang を使うのはファイルに保存したスクリプトを
% python scriptname
ではなく
% chmod +x scriptname
% ./scriptname
のように実行したい場合
対話型プロンプトではそもそも必要ない
よくわからなかったら、慣れるまで
* スクリプト内でASCII文字だけ使うようにする
* 実行する際は % python scriptname
* 対話型プロンプトは使わない
そうすれば #!/usr/bin/env python や # coding: sjis を書く必要が無くなる
あとできればメール欄に sage って入れて
647:デフォルトの名無しさん
09/09/04 00:16:11
>>646 本人がレスして居るのでしょうか?
# coding: Shift_JIS
は 始めから省略が出来たと思いましたが…
書く必要性 1: どの coding: を使用して居るかを明確にする為
記憶では二行目は かなり about に書く事が出来る でしたか?
prompt を使用しないですか…
script が まだ入力待ちの状態だったと理解して居りますが?
>>607
「はじめてのpython」で勉強しています
下記スクリプトを実行したとき、
Winで実行する場合とUbuntuで実行する場合とで
結果が違う(Ubuntuの場合はエラーになる)のですが
どうしてですか?
648:デフォルトの名無しさん
09/09/04 01:01:52
どんなエラーが出たのか書けよ
649:デフォルトの名無しさん
09/09/04 01:05:22
OSが違うからです
650:デフォルトの名無しさん
09/09/04 01:06:22
>下記スクリプト
???
651:デフォルトの名無しさん
09/09/04 01:12:46
異なる環境で動かすことを考えているなら、 coding指定は必ず書いておけ。
標準入力も、inputに頼らず、codecs.getreader()で、
エンコード指定して、sys.stdinからファイル入力として扱うほうが、
トラブルは少ないかもしれない。
652:デフォルトの名無しさん
09/09/04 01:13:36
その変な日本語どうにかしてよ
653:デフォルトの名無しさん
09/09/04 01:20:28
str = codecs.getreader('UTF-8')(sys.stdin)
654:デフォルトの名無しさん
09/09/04 01:23:08
str = codecs.getreader('UTF-8')(sys.stdin).read()
655:デフォルトの名無しさん
09/09/04 01:25:03
っつーかstrをへんこうしたらなにがおこるんだ?
656:デフォルトの名無しさん
09/09/04 01:56:11
うちゅうのほうそくがみだれる
657:デフォルトの名無しさん
09/09/04 01:57:50
変更というよりは邪魔して見えなくしてるだけだ
__builtins__.str
658:デフォルトの名無しさん
09/09/04 06:27:01
py3なら文字コード余裕でした。
659:デフォルトの名無しさん
09/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
09/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:デフォルトの名無しさん
09/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
09/09/04 16:00:32
>>661
そのとおりでした。ありがとうございます。
663:デフォルトの名無しさん
09/09/04 16:15:57
WindowsでPython 2.6.2を使って機種依存文字を処理しようと思ったんですが、
cp932でエンコードして書き出すとき、PythonはNEC選定IBM拡張文字を優先して使うようなんです。
(例えば「掾vの場合、fbb9ではなくee9d)
できたらIBM拡張文字の方で書き出せるようにしたいんですが、何かいい方法があるでしょうか?
664:デフォルトの名無しさん
09/09/04 16:48:19
>>663
Text 文書を保存して その儘 特定機種で Text を読み込むと どの様に為りますか?
665:デフォルトの名無しさん
09/09/04 16:53:22
>>> u"ケ".encode("mbcs")
'\xfb\xb9'
>>> u"ケ".encode("cp932")
'\xee\x9d'
666:デフォルトの名無しさん
09/09/04 17:03:13
>>664 plus
否… 表現が悪かった様で… 片方の機種で その文字を Text に保存して
もう片方の機種で その Text を読み込むと どの様に為りますか?
667:デフォルトの名無しさん
09/09/04 17:19:25
>>665
どうもありがとうございます。
何となく、Windowsではcp932を選べばいいのだと勝手に思い込んでました。
>>666
すみません、勉強不足でよく理解できていないんですが、cp932はWindows以外の環境も考慮してああなっているということでしょうか? もっとよく調べてみます。
668:デフォルトの名無しさん
09/09/04 17:32:22
うにcode か… 素晴らしいな…
669:デフォルトの名無しさん
09/09/04 18:33:07
>インシデント
670:デフォルトの名無しさん
09/09/04 22:10:56
>>665
なんなのその顔文字ふざけてんの?
671:デフォルトの名無しさん
09/09/04 22:18:51
u('-')
たまに出てくるけどかわいい
672:デフォルトの名無しさん
09/09/04 23:06:05
>>670
NEVADA
673:デフォルトの名無しさん
09/09/05 00:12:56
>>671
心の汚れた環境では見れないらしい…
674:デフォルトの名無しさん
09/09/05 22:02:15
osごとに異なるモジュールをインポートするにはどうしたらいいのでしょうか?
C言語で言うifdefみたいなことがしたいのですがうまくいきません・・
675:デフォルトの名無しさん
09/09/05 22:03:45
import sys
sys.platform
676:デフォルトの名無しさん
09/09/05 22:18:03
>>675
ありがとうございます
sys.platformで取り込むモジュールを振り分けられました
importは先頭に書くものだと思っていました。。
677:デフォルトの名無しさん
09/09/06 00:20:31
普通はtry: import hoge except ImportError: import fugaみたいにするんじゃなかったっけ?
678:デフォルトの名無しさん
09/09/06 00:36:49
異なるシステムでもImportErrorでない書き方できるからsys.platform使う方が無難
679:デフォルトの名無しさん
09/09/06 00:42:55
sys.platformというのは初耳だわ
os.nameよりも詳しいのかな
680:デフォルトの名無しさん
09/09/06 00:45:20
platformモジュールとか初めて知った
681:デフォルトの名無しさん
09/09/06 01:05:04
>>680
そういえばそんなのもあったね。程度にしか使われてないよな
sysはビルトインの標準モジュールだから絶対に読み込めるという理由もあるかも
osはパス通ってないとimportできないし
682:デフォルトの名無しさん
09/09/06 18:33:13
スクリプトでテキストを立ち上げたり、IEを起動させたりは可能ですか?
683:デフォルトの名無しさん
09/09/06 18:40:20
yes you can
684:デフォルトの名無しさん
09/09/06 23:46:18
いろいろ試したんだけどwindowsでparamikoが使えない。
これは使えないでOK?
685:デフォルトの名無しさん
09/09/06 23:50:05
Windowsでparamikoつかえるよ?
bazaarなんてWindows用のデフォルトのsshクライアントがparamikoだよ。
686:デフォルトの名無しさん
09/09/07 00:08:23
>>685
俺にとってあんたは神様だ。
設定しかたを教えてくれ!
687:デフォルトの名無しさん
09/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のバージョンに対応するコンパイラをもっていない場合は
URLリンク(mirror.cameronbergh.com)
から対応するパッケージをダウンロードするといいよ。
688:デフォルトの名無しさん
09/09/07 00:54:35
親切にありがとう!
paramiko-1.7.4でやったらすんなりとおった。
689:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/09/10 16:33:31
xがnumpyのarrayなんじゃない?
691:689
09/09/10 16:43:10
>>690
それでした!
どうもありがとうございました。
692:デフォルトの名無しさん
09/09/11 22:49:04
BitTorrent以外でpythonで実装されたクライアントソフトあるいはスタンドアローンソフトって何がありますか?
砕けた言い方をすると、pythonで実装されていて拡張子がexeなそれなりに有名なソフトって何がありますか?
693:デフォルトの名無しさん
09/09/11 22:59:58
BTはPythonやめたんじゃなかったっけ?
694:デフォルトの名無しさん
09/09/11 23:03:43
URLリンク(wiki.python.org)
695:デフォルトの名無しさん
09/09/12 15:52:44
拡張子がexeである必要がよくわからないけど、
bzr, mercurial といったVCSもそうだし、
Editra, Dropbox, TaskCoach, 他にもいろいろあるぞ。
LinuxにいったらさらにPython製デスクトップアプリだらけ。
696:デフォルトの名無しさん
09/09/12 18:57:53
yum
697:デフォルトの名無しさん
09/09/12 18:59:20
とりあえず2chviewerでも作って公開すれば有名になれるんかな
698:デフォルトの名無しさん
09/09/14 05:56:06
>684
これかも
URLリンク(d.hatena.ne.jp)
699:デフォルトの名無しさん
09/09/14 09:44:16
URLリンク(bugs.launchpad.net)
へぇ。
700:デフォルトの名無しさん
09/09/15 12:47:58
>>692
portage, samuraix
701:デフォルトの名無しさん
09/09/15 21:14:28
wikipediaのPythonのページに
「多くの異なる言語で書かれたモジュールをまとめるグルー言語」
とありますが、これは複数のプログラミング言語で書かれたモジュールを
まとめられるということでいいのでしょうか?
702:デフォルトの名無しさん
09/09/17 08:06:50
>>701
文章を途中で切るよな。
703:デフォルトの名無しさん
09/09/17 09:50:28
ワロタ
704:デフォルトの名無しさん
09/09/24 03:21:16
lambda : 1 + 2
が良くて
lambda : print "hoge2"
がダメな理由って何故ですか?
705:デフォルトの名無しさん
09/09/24 03:35:29
lambda式には式(expression)しか書けないから。printは文(statement)。
706:デフォルトの名無しさん
09/09/24 03:43:40
lambda : sys.stdout.write("hoge2\n")
707:704
09/09/24 04:34:27
ありがとう
・・・Pythonってそう言うのを区別するのか・・・先は長そうだ orz
708:デフォルトの名無しさん
09/09/24 06:08:10
python3ではprintは関数だよ^^
709:デフォルトの名無しさん
09/09/24 07:27:03
Pythonで
print "x=#{x}\n" if DEBUG (Rubyの例)
みたいに1行で完結させる書き方って可能ですか?
同じ物をPythonで書くと
if DEBUG:
print "x="+str(x)
となると思いますが出来ればデバッグメッセージごときに2行は使いたくない・・・
710:デフォルトの名無しさん
09/09/24 08:07:41
if DEBUG: print "x="+str(x)
だが、logging使え。
711:デフォルトの名無しさん
09/09/24 10:34:36
if DEBUG:
print "x="+ str(x)
712:デフォルトの名無しさん
09/09/24 10:36:08
>>711 ミスったので見なかったことに
713:デフォルトの名無しさん
09/09/24 11:42:46
logging.logger
714:デフォルトの名無しさん
09/09/24 13:37:14
URLリンク(pythonjp.sourceforge.jp)
ここにある
def partial(func, *args, **keywords):
という書き方に出てくるCのポインタみたいな記号(*args,**keywords)ってどういう意味ですか?
715:デフォルトの名無しさん
09/09/24 13:43:23
URLリンク(pythonjp.sourceforge.jp)
716:デフォルトの名無しさん
09/09/24 13:53:55
ありがとござます
717:デフォルトの名無しさん
09/09/24 17:46:57
PILのpython3対応はまだか!
718:デフォルトの名無しさん
09/09/24 22:47:32
>>712
え?どこどこ?
719:デフォルトの名無しさん
09/09/24 23:06:30
Python的には字下げだろう。
720:デフォルトの名無しさん
09/09/27 04:43:59
一度定義した変数を消去することは可能ですか?
python3.0で、
print = 5
とするとprintという名前の変数に5が代入されたのですが、
そのあと元のprintという関数を使いたい場合はどうすればよいのでしょうか?
721:デフォルトの名無しさん
09/09/27 04:53:34
__builtins__.print
もしくは
del print
722:720
09/09/27 05:15:58
>>721
ありがとうございました。
723:デフォルトの名無しさん
09/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
09/09/27 11:26:39
訂正:
('User-agent', 'User-Agent: Mozilla/5.0 〜略)
の箇所は
('User-agent', 'Mozilla/5.0 〜略)
725:デフォルトの名無しさん
09/09/27 11:31:06
HTTPヘッダでkeep-aliveするようにしても
urllib2がそれを想定してないからうまく動かなかったような
ソース読んで絶望した記憶がある
urllib2 keep-alive でぐぐってみるといいんじゃないか
726:723
09/09/27 11:34:14
>>725
ありがとう。ここのサイトのをやってみる!
URLリンク(python.blog-slime.com)
727:723
09/09/27 11:36:47
↑はurllibだった。下のサイトのを拝借するのが一番楽そうですね。d
URLリンク(memo.jj-net.jp)
728:723
09/09/27 12:03:05
ちなみに・・・
urllib2だとcookieの自動処理が容易に出来るけど、keep-aliveが出来ない
urllib だとcookieの自動処理を容易に出来ないが、keep-aliveは出来る
(URLリンク(www.python.jp)見ると、cookielibはurllib2での使用を想定している?)
HTTP/HTTPSをやる上で、比較的高機能で知られたライブラリってありますか?
(PerlのLWP、JavaのCommons/HttpClientみたいな)
729:デフォルトの名無しさん
09/09/27 18:42:43
参考になるかどうかわからんけど2.6, 3.0系列の構成は
URLリンク(urllib-gsoc.blogspot.com)
URLリンク(www.python.org)
URLリンク(www.python.org)
こんなかんじらしい…
730:デフォルトの名無しさん
09/09/27 18:45:28
一番下の example が参考になるかも試練
URLリンク(docs.python.org)
731:デフォルトの名無しさん
09/09/27 18:53:41
おまいらおちつけ
>>723のコードはPython2系列だ
732:デフォルトの名無しさん
09/09/27 19:01:48
URLリンク(fisheye.toolserver.org)
Bingo? 直感で
実は keep-alive の意味がよくわからないw
733:723
09/09/27 23:14:59
みんな、アドバイスありがとう!
python 2.4 に拘っている訳ではないんだ。
v3.0に上げて >>730のurllibとhttp.cookie_jarでやってみる。
>>732
ありがとう!参考にさせてもらうぜぃ
734:723
09/09/28 01:08:16
python3.1 ってif,for,printが式になってて、今まで書いてたコードが動かねーおwww
なんかLISPっぽいね。
2.6と変わりすぎててわらってしまったw
735:723
09/09/28 01:13:56
ひとりごと多くてすまん
>>734は気にしないでくれ。勘違いだったお
736:デフォルトの名無しさん
09/09/28 02:44:31
Twitterでやれ
737:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/09/28 15:28:31
フォーカスの合ってるウィジェットにしか
イベントは送られない。
739:737
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/09/28 19:15:31
元の文字列がShift_JISだと仮定
import urllib
x = 'あいうえお'
y = urllib.quote(x.decode('sjis').encode('utf8'))
742:740
09/09/28 20:07:56
>>741
ありがとうございました、出来ました。
743:デフォルトの名無しさん
09/09/28 21:03:12
>>737
好きなのをどうぞ
- 2つ目のウィンドウをクリックしてからEsc押す
- sub_win.focus_set()
- root.bind('<Escape>', button_callback)
744:デフォルトの名無しさん
09/09/29 03:25:29
複数行の文字列xからどうすれば中身を1行ごとに分割して1つずつリストに代入させることが出来ますか?
745:デフォルトの名無しさん
09/09/29 03:40:05
複数行の文字列をどういうデータ形式で持っているのかによる。
746:デフォルトの名無しさん
09/09/29 03:42:06
"abc\ndef\nghi".split("\n")
747:737
09/09/29 03:59:51
>>743
レスありがとうございます
2枚目のウインドウは作っただけではフォーカスは動かないのか・・・il||li ○| ̄|_
真ん中の方法を使わせて貰いました
748:デフォルトの名無しさん
09/09/29 04:04:20
Tkinterについての質問です。
何らかのイベントが起きたときにフレームの内容を
丸ごと入れ替えるようなプログラムはどの用にする
ば書くことができますか?
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5400日前に更新/160 KB
担当:undef