Pythonのお勉強 Part44

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
2デフォルトの名無しさん:2011/09/04(日) 00:55:04.70
以上
3デフォルトの名無しさん:2011/09/04(日) 12:38:41.34
まとめwikiが放置されてるな
4デフォルトの名無しさん:2011/09/04(日) 17:58:18.42
ねこだいすき
5デフォルトの名無しさん:2011/09/04(日) 18:43:47.96
3.2.2正式版来たよ
ページは未更新だけどファイルはアドレス直打ちで落とせる
6デフォルトの名無しさん:2011/09/04(日) 19:48:43.20
> release candidate
7デフォルトの名無しさん:2011/09/04(日) 19:55:50.35
ページは未更新つってんだろが
8デフォルトの名無しさん:2011/09/04(日) 20:03:58.95
前スレを埋めるか、DAT落ちレベルまで使ってから引っ越してくれよ
9デフォルトの名無しさん:2011/09/06(火) 00:50:50.11
ページの更新も来てたよ
http://www.python.org/download/releases/3.2.2/
10デフォルトの名無しさん:2011/09/07(水) 15:15:37.45
テンプレに入れてよ Dive Into Python 3 初めてのPythonプログラム http://diveintopython3-ja.rdy.jp/your-first-python-program.html
11デフォルトの名無しさん:2011/09/07(水) 16:36:44.45
>>10
それはこっちに自分でやってくれ
http://python.rdy.jp/wiki.cgi?page=%BB%B2%B9%CD%A5%B5%A5%A4%A5%C8
12デフォルトの名無しさん:2011/09/08(木) 20:36:42.66
とりあえず川崎のあおい書店でパイそんチュートリアル買ってきたわ
13デフォルトの名無しさん:2011/09/08(木) 21:09:53.52
InfoWorldが2011年のベストオープンソース賞「Bossies」を発表
http://sourceforge.jp/magazine/11/09/08/0356201
# PythonベースのWebフレームワーク(Web2Py)
# PDFドキュメントが有料($13.95)なのは痛い…
14デフォルトの名無しさん:2011/09/08(木) 21:15:04.76
追記:
日本でのWeb2pyに関する情報を発信するサイト
http://sites.google.com/site/web2pyjapan/book
15デフォルトの名無しさん:2011/09/08(木) 21:46:25.75
DjangoとFlaskとweb2pyはいったいどれが良いんだよ
16デフォルトの名無しさん:2011/09/08(木) 22:33:09.86
質問おねがいします。
pymediaを使いたいんですが
libogg-1.1+
libvorbis-1.0.1+
liblame-3.95.1+
libfaad2
を先にインストールしないといけない様なのですがsetup.pyもないですし、
これはどうやってインストールすれば良いんでしょうか?
OSはXPです。宜しくお願いします。
17デフォルトの名無しさん:2011/09/08(木) 22:45:42.67
>>12
そこ、俺がいつも買いに行ってる本屋じゃんw
なんて狭い世の中だ・・・(過疎スレなのに)

>>13
$13.95はかなり良心的では?
というか、わざわざPDFで読まなくてもHTMLでいいような気がする。
http://web2py.com/examples/default/documentation
ドキュメントは見やすいし、サンプルはシンプルだ。
とても気になる。

>>15
PylonsやTurboGearsなども。
流石に手当たり次第に試すのは面倒だから、
比較記事を調べるのがいいよ。
18デフォルトの名無しさん:2011/09/08(木) 23:03:57.31
>>16
一応ここに非公式のビルドはある。
http://www.lfd.uci.edu/~gohlke/pythonlibs/

ここを参考
http://stackoverflow.com/questions/2141701/pymedia-installation-on-windows-with-python-2-6

あとPythonのバージョンも書いたほうがいい。
19デフォルトの名無しさん:2011/09/08(木) 23:12:13.44
>>18
ありがとうございます。助かりました!
ちなみにバージョンは2.6でした。次からバージョンも記載します。
20デフォルトの名無しさん:2011/09/08(木) 23:26:38.86
>>15
俺はFlaskがシンプルで好き
extensionも揃ってるしなにより分かりやすい
21デフォルトの名無しさん:2011/09/09(金) 01:07:41.50
werkzeug
22デフォルトの名無しさん:2011/09/09(金) 05:10:48.41
関数名をstr型で保持していて,その関数名の関数を呼び出す事にはどうすればいいのでしょうか.
例えばname = "func1"(ただし,func1は既に定義済みとする)の様な場合です.
この場合,name()のように呼び出すと,TypeError: 'str' object is not callableと怒られてしまいます.

23デフォルトの名無しさん:2011/09/09(金) 05:29:33.11
>>22
関数が定義されているのがグローバルスコープなら、まずglobals()でグローバルシンボルを
格納している辞書を得て、そこから名前に対応する関数オブジェクトを得る。

globals()[name]()
24デフォルトの名無しさん:2011/09/09(金) 07:17:48.15
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
25デフォルトの名無しさん:2011/09/09(金) 12:12:18.27
>>23
うまくいきました.ありがとうございました.
これ便利だなぁ.
26デフォルトの名無しさん:2011/09/10(土) 15:43:15.03
>>15
DjangoのAdmin機能が魅力的に思えるならDjango、思わなかったならFlask
web2pyは知らない。Pythonぽくないって話はそこここで見る気がするけど。
27デフォルトの名無しさん:2011/09/10(土) 19:03:54.19
Pythonで時間を指定して、その間に入力しないと強制終了みたいな処理が作りたいのですが
良い方法はないでしょうか?
具体的には
raw_input("Input: ")の処理を5秒以上経過したら終了といった感じです。
28デフォルトの名無しさん:2011/09/10(土) 20:26:42.14
toggle使うとか
29デフォルトの名無しさん:2011/09/10(土) 23:13:14.93
opencvでフレームを一枚ずつ抜き出して
保存するにはどうすればいいでしょうか?

for文でフレームずつ指定するの?
30デフォルトの名無しさん:2011/09/10(土) 23:28:13.30
>>27
raw_inout の timeout って過去スレで見た希ガス
31デフォルトの名無しさん:2011/09/10(土) 23:50:34.97
スレッド使えばいいじゃない
32デフォルトの名無しさん:2011/09/11(日) 00:09:33.19
>>27ですがやっと見つけました。
ちょっと知らないモジュール使ってて挙動がいまいち理解できてないけど。。

http://codepad.org/yoaYCCOI
33デフォルトの名無しさん:2011/09/11(日) 00:42:04.91
win32comでEXCELをコントロールする下のコード試したのですが、
IV65536とかの大きな位置にデータが入っていると
UsedRange.Valueでpywintypes.com_errorがでます。
どこがおかしいのでしょうか?
http://d.hatena.ne.jp/Wacky/20091011/1255259575
34デフォルトの名無しさん:2011/09/11(日) 10:36:19.22
eggファイルって、バージョンごとに用意しないといけないの?
バイナリファイルを含むならまだしも、pure pythonなライブラリなのに
バージョンごとに用意しなきゃいけないのがすごく面倒です。
35デフォルトの名無しさん:2011/09/11(日) 18:46:24.86
Python2.7を使ってるんだけどsignal関数って何か変更された?
signal.SIGALRMもsignal.alarm()も使えないし分からん
36uy:2011/09/11(日) 23:37:56.64
>>35
あっそっそ
37デフォルトの名無しさん:2011/09/11(日) 23:39:15.07
寒々としたぴちょんスレにまでbotの魔の手が!
38デフォルトの名無しさん:2011/09/11(日) 23:59:13.70
uyとかまだいたんだ
39デフォルトの名無しさん:2011/09/12(月) 00:22:54.66
djangoを勉強してみようと思っているのですが、
勉強に適している書籍はありませんか?
40デフォルトの名無しさん:2011/09/12(月) 02:25:16.08
>>33
上限が65535
41デフォルトの名無しさん:2011/09/12(月) 03:11:01.62
>>31さんの言うとおりスレッドで実装して見ました。
アドバイスありがとうございました

import threading
from time import sleep

got_input = False

def timeout():
sleep(5)
if got_input == False:
print
print "Sorry, you didn't enter anything."
print "Have a nice day."

if __name__ == "__main__":
time_thread = threading.Thread(target=timeout)
time_thread.start()
print "Enter your name: "
name = raw_input("> ")
got_input = True
time_thread.join()
print "Welcome,", name
42デフォルトの名無しさん:2011/09/12(月) 03:47:44.48
>>41

import sys
from select import select

timeout = 10
print "Enter something:",
sys.stdout.flush()
rlist, _, _ = select([sys.stdin], [], [], timeout)
if rlist:
s = sys.stdin.readline()
print s
else:
print "No input. Moving on..."
43デフォルトの名無しさん:2011/09/12(月) 05:59:31.89
>>41
だめじゃん
44デフォルトの名無しさん:2011/09/12(月) 13:08:19.34
>>43
汚いけどこんな感じで

import threading
from time import sleep

got_input = False

def timeout():
global got_input
sleep(5)
if got_input == False:
got_input = True
print "Sorry, you didn't enter anything."
print "Have a nice day."
else:
got_input = False


if __name__ == "__main__":
time_thread = threading.Thread(target=timeout)
time_thread.start()
print "Enter your name: "
name = raw_input("> ")
if got_input == False:
got_input = True
print "Welcome,", name
else:
got_input = False

time_thread.join()
45デフォルトの名無しさん:2011/09/12(月) 13:28:15.61
ググってみたら、シグナルを使う方法もあるな
http://stackoverflow.com/questions/1335507/keyboard-input-with-timeout-in-python
46デフォルトの名無しさん:2011/09/12(月) 13:41:37.24
>>44
だめじゃん
47デフォルトの名無しさん:2011/09/12(月) 14:04:16.95
見覚えあるなと思ったら、くだスレで一年ぐらい前にやってた話題だな
ここの
ttp://logsoku.com/thread/hibari.2ch.net/tech/1282537545/
538から
48デフォルトの名無しさん:2011/09/12(月) 14:57:04.40
だれか>>34プリーズ
4930:2011/09/12(月) 15:02:45.79
>>47

調べる手間が省けた
50デフォルトの名無しさん:2011/09/12(月) 17:51:19.65
Python2.6で組み込み済みのVer3.3.6以外のSQLite3を使いたいのですが
方法がわかりません・・・どなたかご存じないでしょうか
51デフォルトの名無しさん:2011/09/12(月) 20:55:29.04
>>40
いや、65534とかのセルでもエラーが出るんだけど
52uy:2011/09/12(月) 21:20:36.36
>>50
しらねっこっこっこっこっけっけっけっけっけ
53デフォルトの名無しさん:2011/09/12(月) 21:44:30.06
>>50
ソースからコンパイル。
54デフォルトの名無しさん:2011/09/12(月) 22:31:47.97
.dllを上書き
55デフォルトの名無しさん:2011/09/12(月) 23:14:29.99
lolipopでdjangoは使えますか?
56デフォルトの名無しさん:2011/09/13(火) 02:57:35.45
_
57デフォルトの名無しさん:2011/09/13(火) 12:39:01.39
>>55
出来る出来ないで言えば出きるけど面倒過ぎてお勧めできない
58デフォルトの名無しさん:2011/09/13(火) 20:30:31.38
audiotoolsというモジュールをインストールしたいのですが
pytho setup.py installを実行すると
error: Unable to find vcvarsall.batとなってしまうんですがどう対処したらいいでしょうか?
vcvarsall.batはvisual studio2010にありました。pathを通してみたんですが駄目でした。

宜しくお願いします。

59デフォルトの名無しさん:2011/09/13(火) 21:01:44.01
>>58
つ2008

http://slacy.com/blog/2010/09/python-unable-to-find-vcvarsall-bat/
>Just download and install Microsoft Visual Studio Express 2008 which is free.
>Please note the 2008 part. This must match the compiler that Python itself
>was built with, and that’s the 2008 (NOT 2010) version.
>(See http://mail.python.org/pipermail/python-list/2010-April/1242706.html for more details why 2008 is important.)
60デフォルトの名無しさん:2011/09/13(火) 21:13:52.14
>>59
ありがとうございます!やってみます。
61デフォルトの名無しさん:2011/09/13(火) 23:30:57.17
すいません、>>60ですが2008をインストールしてやってみましたが
src/cdiomodule.c(2) : fatal error C1083: include ファイルを開けません。'cdio/cdd
a.h': No such file or directory
error: command '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe"' fa
iled with exit status 2

となってしまいました…。色々とググッては見たんですけど解決法が見つからず、(python、今までありがとう…、なブログは見つけましたが)
程度の低い質問を何度もして申し訳ないですが宜しくお願いします。
6259:2011/09/14(水) 00:08:57.09
>>61
audiotoolsってこれ?
http://audiotools.sourceforge.net/install.html

Required Prerequisites

libcdio
63デフォルトの名無しさん:2011/09/14(水) 00:41:48.47
>>62
それです! Required Prerequisitesはまったく見ていませんでした。すいません。
で、今、pycdioのインストールを試みましたが
C:\Documents and Settings\user\デスクトップ\pycdio-0.17>easy_install http://pypi
.python.org/packages/source/p/pycdio/pycdio-0.17.tar.gz#md5=648a83280357930d4115
9ec9bed990d5
Downloading http://pypi.python.org/packages/source/p/pycdio/pycdio-0.17.tar.gz#m
d5=648a83280357930d41159ec9bed990d5
Processing pycdio-0.17.tar.gz
Running pycdio-0.17\setup.py -q bdist_egg --dist-dir c:\docume~1\user\locals~1\t
emp\easy_install-b27iqe\pycdio-0.17\egg-dist-tmp-4zszxm
** Error trying to run pkg-config. Is it installed?
** If not, see http://pkg-config.freedesktop.org
error: 指定されたファイルが見つかりません。  となってしまいました…

やりたい事は16bit以上(たいてい24bitです)のオーディオファイルを読み込んで
サンプルレート、サイズビットレートの取得など、組み込みのwave、aiffの様な動作をする
モジュールをインストールしたいので特にaudiotoolsにこだわっている訳ではないのですが
どうしたらいいでしょうか?
すいません、宜しくお願いします。

64デフォルトの名無しさん:2011/09/14(水) 00:57:57.92
見よう見まねで2ヶ月。windowsXP:python2.7.2 です。
リストの中のリストの第2要素の出現数カウントです。嵌りました。
1・2行目がかっこ悪いです。なくしたいです。
7・8行目がかっこ悪いです。1行で済ませたいです(;ではなく)。
どなたか書き直し例をお願いします。

1 count = 0
2 cmp_dat = ''
3 for dat in dat_List:
4   if not cmp_dat == dat[1]:
5     if not dat[1] in appear:
6       appear[dat[1]] = 0
7   appear[dat[1]] += 1
8   count = appear[dat[1]]
9   cmp_dat = dat[1]

…以下、countを辞書にいれて使用する処理が続く
65デフォルトの名無しさん:2011/09/14(水) 02:00:16.92
断片だけ貼られてもな。
dict.getやdict.setdefault使えよ、としか言えん。
66デフォルトの名無しさん:2011/09/14(水) 02:24:42.12
collections.Counter(i[1] for i in data_List)
67デフォルトの名無しさん:2011/09/14(水) 20:09:43.88
>>63
昨日のは解決した?

おそらくオーディオ関連のライブラリはほとんどC/C++で書かれているだろうから、
適切なライブラリを探して
ctypesやBoost.Pythonを使えばいい。
(Python APIを直接触るのは面倒なのでやめたほうがいい)

運が良ければ、そのライブラリのラッパーがあるかもしれない。

WindowsならOpenALとかXAudioとかかな。

http://www.kmonos.net/alang/boost/classes/python.html
http://www.python.jp/doc/contrib/ctypes/tutorial_jp.html
68デフォルトの名無しさん:2011/09/14(水) 21:23:55.52
>>67
全く解決してませんでした。ぶん投げてふて寝しました。
教えて頂いた情報から道を模索してみたいと思います。
面倒見てくれてほんとにありがとうございます。
またわからないことがあったら宜しくお願いします。
69デフォルトの名無しさん:2011/09/15(木) 00:28:05.28
pythonのloggingモジュールについてお聞きしたいことがあります。
python 2.6.6 on Debian squeeze 環境なのですが、理解不能な現象が起きて困っています。
if __name__ == "__main__":

logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s',
filename=LOGFILE,
filemode='a')

# log start
logging.info("logging start " + LOGFILE)

上記のようなコードを書いているのですが、このスクリプトを仮に test.py としますと、
それを、Linuxの自動ログインを組んだ環境で、 .bash_profile に
python test.py
とだけ書いておいて、自動ログインが走ったら速攻pythonスクリプトが動くようにしています。
そうやって自動で走らせると、なぜかログに logging start のログが6行出力されてしまいます。
しかし手動で実行すると1行だけしか出力されません。
loggingモジュールの代わりに、import os して、 os.system("echo logging start > " + LOGFILE)
とOSのリダイレクトを使ってログを吐いた場合は自動ログインであっても手動実行であっても1行しか
出てきません。
また、1度OSが立ち上がった時は、ログオフ>自動ログイン とやってもlogging モジュールは1行しか
ログを吐きません。

問題の現象は、Linuxを起動>自動ログインが走る>test.pyが走る
この時に1度だけ6行もログを吐いてしまう事です。OSのリダイレクトでテスト、手動でスクリプト実行テスト、
一度ログアウトして自動ログインでテスト等々やってみても、1行しか吐かない事から
pythonのloggingモジュールのバグ?とか思っているんですが、ご教示頂けないでしょうか?
70デフォルトの名無しさん:2011/09/15(木) 01:20:25.16
Debianのバグじゃね?
71デフォルトの名無しさん:2011/09/15(木) 02:35:05.46
Debianはバグバグだからなぁー
72デフォルトの名無しさん:2011/09/15(木) 08:17:45.70
>>69
test.pyという名前はやめたほうが。。。
よくトラブルの原因になるし。
まあ今回は違う原因だろうけど。
73デフォルトの名無しさん:2011/09/15(木) 10:51:45.17
>>69
起動時にいくつかのスクリプトがログインシェルとして開始していると予想。
ログにPIDを出力して調べてみたら?
74デフォルトの名無しさん:2011/09/15(木) 16:52:09.24
cxFreezeを使って実行ファイルを作りたいのですが、
pygameをimportするスクリプトを実行ファイルにしようとすると
エラーになります

print "hello"
は通りますが、
import pygame
print "hello"
は通りません。

ググっても分かりませんでした
原因と解決法が分かる方がおりましたらご教示ください。
75デフォルトの名無しさん:2011/09/15(木) 16:56:14.92
2.6.0から2.6.6に更新すると幸せになれますか?
2.7はurllibとhttplibがちょっと変わってるのでスクリプトが動かなくなってしまいました。

レスポンスコードが200番台でも200以外でエラーを投げるのは修正されてるのかな?
76デフォルトの名無しさん:2011/09/15(木) 17:20:52.93
>>74
環境は?
77デフォルトの名無しさん:2011/09/15(木) 17:22:15.77
>>74
エラーメッセージはないの?

>>75
>micro のアップデートは、同じ仕様のより良い Python

>micro releases, a.k.a. patch, or bug fix releases.

例えば、

>Python 2.5系のセキュリティ修正版「Python 2.5.5」をリリースした。Python 2.5.4に
>セキュリティ関連の修正を加えたもので、新機能の追加等は行われていない。

だから、とりあえずmicroのバージョンは最新のほうがよい。

http://code.google.com/p/python-doc-ja/wiki/ProjectManagement
http://www.etsimo.uniovi.es/python/peps.old/pep-0102.html
http://sourceforge.jp/magazine/10/02/01/0358237
78デフォルトの名無しさん:2011/09/15(木) 17:35:58.95
>>77
ありがとうございます!
って事は動かなくはならなさそうですね、入れてみようと思います。

ちなみに・・・
2.6のmicroのリリースノートってどこかにありますかね?
2.6.6と2.6.7は見つかったんですが、それより古い情報が見当たらないのですが・・・
79デフォルトの名無しさん:2011/09/15(木) 17:45:56.91
80デフォルトの名無しさん:2011/09/15(木) 18:54:49.30
できるだけ、repr() の戻り値をeval() に渡すと元のオブジェクトに戻せるようにする、と言っている割には、

inf1 = float('infinity')
inf2 = eval(repr(inf1))

これがエラーになる。'nan'や'-infinity'でも同じ結果。
これって逝けてないと思うんだが・・・
81デフォルトの名無しさん:2011/09/15(木) 19:06:54.74
これか
Issue 1732212: repr of 'nan' floats not parseable - Python tracker
http://bugs.python.org/issue1732212
82デフォルトの名無しさん:2011/09/15(木) 21:42:23.92
>>64
counter = dict()
def count(item):
 if item in counter.keys():
  counter[item] += 1
 else:
  counter[item] = 1
map(count,[dat[1] for dat in dat_list])
83デフォルトの名無しさん:2011/09/16(金) 01:53:36.66
>>73
レスありがとうございます!
あなた様の仰るとおり、複数のシェル環境が立ち上がっていました!
logging.info("pid = " + str(os.getpid()))
で実行すると、5個も違うPIDが出てきました!
$ ps auxww | less
して該当のPIDを確認してみると、pts/1 〜 pts/5 でした。
そういえばコンソールを切り替え可能ですね、Alt+F2とかF3とかF4とかで・・・。
本来1つしか実行すべきではないのに、5重起動していました。
だからログも多重に出てたんですね。
調査結果は5重で、ログは6個重複で1個差があるのは、作業に使っている
ptsが1個スクリプト終了しての調査なので、その分だと思います。

疑問が解決しました。本当にありがとうございます。
# loggingモジュールのバグだなんて言って申し訳ないです。自分のスキル不足でした。
84デフォルトの名無しさん:2011/09/16(金) 05:20:11.18
スキル不足の初心者ほど他人のせいにしたがる
85デフォルトの名無しさん:2011/09/16(金) 12:32:33.08
ほめられて一物を加えず、けなされて一物を失わぬ
86デフォルトの名無しさん:2011/09/16(金) 16:37:57.72
台湾・呉総理 「韓国ドラマを見ると反吐が出る」 「見れば見るほど背筋が寒くなる」
http://hatsukari.2ch.net/test/read.cgi/news/1316147313/

台湾の最高行政責任者が韓国ドラマが氾濫する台湾TVに対して激しい表現を使って指摘していた。

15日中国の新華社通信などによると、呉敦義台湾行政院長(総理格)は
「台湾のテレビ番組は陳腐で、毎日韓国ドラマが流れ、二番煎じ、三番煎じの内容に反吐が出る」と話した。

呉院長は引き続き韓国の『韓』と、寒いという意を持った『寒』の中国語発音が同じ点を利用して
「韓国ドラマは見れば見るほど背筋が寒くなる」と話した。 彼はまた、
「台湾は高画質のテレビ番組製作を支援する。来年には高画質デジタルTVの時代が開かれるだろう」と付け加えた。

彼は台湾テレビ番組が陳腐だという点に対し、代表的な例で韓国ドラマの氾濫を指摘した。
これに伴い、最近日本でおきている嫌韓旋風が台湾でも起こることでないかと憂慮する声も出てきている。

台湾では昨年広州アジア競技大会で女テコンドー有力金メダリスト候補であった楊淑君が
1回戦で失格になった後、「韓国の審判が不当な判定を下した」と声を上げ韓国商品不買運動と韓国ドラマ視聴拒否運動が広がった。

ソース 朝鮮日報(韓国語) 2011.09.16 10:50
http://news.chosun.com/site/data/html_dir/2011/09/16/2011091600868.html?news_Head2
87デフォルトの名無しさん:2011/09/16(金) 19:13:44.92
mysqlを使うのに一番いいライブラリを教えてください
88デフォルトの名無しさん:2011/09/16(金) 19:28:18.55
>>87
SQLAlchemyがメジャー
89デフォルトの名無しさん:2011/09/16(金) 19:37:25.33
>>88
ありがとうございました
90デフォルトの名無しさん:2011/09/17(土) 10:04:22.73
Pythonを勉強し始めているものです。
クラスの中に、クラスを作る意味があまりわかりません。。。
メソッドの場合は、メソッドの中でしか使用しない、メソッドを書けて便利だと思うのですが、クラスの場合も同じ
理由でクラスを入れ子にできるのでしょうか?
91デフォルトの名無しさん:2011/09/17(土) 10:40:52.46
>>90
俺なんてselfって書く意味すらわかんねーけど
PyPIに自作モジュールいっぱい登録してる
気にすんな
92デフォルトの名無しさん:2011/09/17(土) 10:41:37.08
クラス定義や関数定義は単なるステートメントだから
どこにでも置ける。ただそれだけ。
93デフォルトの名無しさん:2011/09/17(土) 10:48:13.74
>>90
Pythonで使う例ってあまり見ないけど、
Javaではそういったインナークラスはよく使うね。

「java swing listener」でググると良いかも。
94デフォルトの名無しさん:2011/09/17(土) 10:57:01.11
そりゃJavaにはファーストクラスの関数が無いから仕方ない
95デフォルトの名無しさん:2011/09/17(土) 11:16:48.92
Pythonはtype関数さえ扱えれば神に一歩近づけるってじっちゃんが言ってた
9664:2011/09/17(土) 14:22:36.63
>>65 >>66 >>82

レスありがとうございます。試してみます。
(pythonいじりが出来ない状態でした。遅くてすいません)
97デフォルトの名無しさん:2011/09/18(日) 19:15:32.37
dict(item.split(u'=') for item in query_string.split(u'&'))

URLクエリをディクショナリ形式にするワンライナなんだけど、これって分割して書くとどうなるの?
98デフォルトの名無しさん:2011/09/18(日) 19:50:04.52
>>97
query_string = u'sourceid=chrome&ie=UTF-8&q=python+dict'
hoge = query_string.split(u'&')
fuga = [item.split(u'=') for item in hoge]
result = dict(fuga)

リストの内包表記をやらないなら
query_string = u'sourceid=chrome&ie=UTF-8&q=python+dict'
hoge = query_string.split(u'&')
result = {}
for item in hoge:
  (key, value) = item.split(u'=')
  result[key] = value
99デフォルトの名無しさん:2011/09/18(日) 20:09:21.80
>>98
ありがと。

ペアのlistを内包したlistをdictに渡すとdict化するんですね。内包表記も知らなかったので、勉強になった。

しかしPythonの「やり方は一つ」の精神ってまだ生きているんだろうかw
1005:2011/09/18(日) 21:26:25.86
ネットの文書ファイル拾うにはどうすればいいですか?
101デフォルトの名無しさん:2011/09/18(日) 21:34:53.74
>>100
URLがわかっていれば、ブラウザの上のほうでアドレスをそのとおり入力して移動
テキストファイルなら表示されるし、ZIPファイルならダウンロードのダイアログボックスがでる。
jpgなら表示される。
102デフォルトの名無しさん:2011/09/18(日) 21:39:04.46
>>100
小さいウェブサイトなら、たとえば、
Website Explorerというソフトウェアでしらべあげることができます
Googleと同様、Website Explorerもリンクをたどるだけだから、
どこからもリンクされてないファイルは、みつからない
103デフォルトの名無しさん:2011/09/18(日) 21:42:48.48
おまえらはなんてやさしいんだ?
1045:2011/09/18(日) 21:56:44.65
>>101-102
優しいけど違うよ

Webサーバーにあるファイルをダウンロードするって事なんだけど。。。。
105デフォルトの名無しさん:2011/09/18(日) 22:11:24.52
>>104
def download(url, dirpath=".", opener=None, fname = "", encoding='utf-8'):
 if not fname:
  fname = url.split("/")[-1]
  fname = urllib.unquote(fname).decode(encoding)
 outpath = os.path.join(dirpath, fname)
 if opener:
  fin = opener.open(url)
  data = fin.read()
  with open(outpath, "wb") as fout:
   fout.write(data)
 else:
  urllib.urlretrieve(url, outpath)

こういうこと?
106デフォルトの名無しさん:2011/09/18(日) 22:11:34.71
ftplib使え
107デフォルトの名無しさん:2011/09/18(日) 22:17:56.66
PyPIで検索すればけっこう見つかるのに…
http://pypi.python.org/pypi

fileDownloader.py
http://pypi.python.org/pypi/fileDownloader.py/0.4.0
108デフォルトの名無しさん:2011/09/18(日) 23:21:33.27
やっぱアンチスレもくだすれもなくなると
こういうやからが増えるな
109デフォルトの名無しさん:2011/09/19(月) 03:45:31.19
110デフォルトの名無しさん:2011/09/19(月) 19:32:20.41
アンチスレはまだまだ健在だお
111デフォルトの名無しさん:2011/09/19(月) 19:51:29.50
みなさんはどうやってコード整形してます?
自分はPythontidy使ってますが、他の方法も気になります
112デフォルトの名無しさん:2011/09/19(月) 20:02:12.76
必要ない
113デフォルトの名無しさん:2011/09/19(月) 20:16:56.88
コード整形は使ったことはないな
強いて言うなら、pep8とpylintの書き方に関する警告は気にしてるけど
114デフォルトの名無しさん:2011/09/19(月) 20:57:35.43
emacsのpythonモードonly。
115デフォルトの名無しさん:2011/09/19(月) 21:33:44.33
python3で使える整形ツールないから、自分で作ったわ。
tokenizeを使えば簡単かなぁ、と思い改良しながら使ってたけど、
どうもスライス表記の始点or終点の省略形の厳密な判別が面倒臭い。
( a[10:] みたいなの)
Pythonの中では、比較的だけどコロンは多義に使われているんで、
コンテキストの解釈無しにトークンの種類だけで機械的なスペース挿入は
無理っぽかった。

で、parser併用でコンテキストを解釈しつつ整形することで、なんとか
最近所望の動作に近づいたが、今度はツールのソースがカオスになったw

公開してもいいけど、このカオスを解消してからかな・・・
欲しい人がいれば、正月休みに期待してね。
まぁ、それまでにもっと高性能なのが公開されたら、永遠の俺様ツール化の方向で。
116デフォルトの名無しさん:2011/09/19(月) 22:05:41.91
ども >>111です。

友人がeclipseのpydevで
117デフォルトの名無しさん:2011/09/19(月) 22:34:27.11
>訂正
使わない派も多いのかな。
友人がeclipseのpydevでサクサク整形してるの見て使い始めたのだけれど、一旦使うと辞められなくなった。

>>114
Emacs にはpythonモードなんてあるんですね。Vimにもpython環境をお世話してくれるプラグインが欲しい...

>>115
3系はPythontidyも対応してないんですよね。
作るとなるとスライスのあたり確かに厄介そうですね。
3系使いで整形派の人は渇望してると思います。健闘祈る(`・ω・´)ゞ
118デフォルトの名無しさん:2011/09/19(月) 23:56:53.51
コード整形って何?
pep8のルールでVim設定して、上で出てたpep8とpylint辺り入れれば、不便さはないと思うけど... 閉じ括弧の補完とか?
119デフォルトの名無しさん:2011/09/20(火) 02:07:47.91
try: hoge = a / b
except ZeroDivisionError: hoge = 0
try: fuga = b * c / d
except ZeroDivisionError: fuga = 0

みたいなのがいくつも並んじゃってなんとなく気持ち悪いです。
悩んだ末に思いついたのが以下のような解決法なのですが、もっといい方法がありそうな気がします。なにかありませんか?

def calc(exp, **args):
  for v in args:
    exp = exp.replace(v, str(args[v]))
  try:
    return eval(exp)
  except ZeroDivisionError:
    return 0
hoge = calc('a / b', a=a, b=b)
fuga = calc('b * c / d', b=b, c=c, d=d)
120デフォルトの名無しさん:2011/09/20(火) 02:19:26.43
lambda と キーワード引数かな
121デフォルトの名無しさん:2011/09/20(火) 02:39:04.32
整形された状態で書いちゃうよね…
煽りとかじゃなく、Pythonの整形ツールにどういう用途があるのかは気になるな
122デフォルトの名無しさん:2011/09/20(火) 03:09:05.25
>>119
>>> def calc(exp, *args):
... try:
... return exp(*args)
... except ZeroDivisionError, e:
... return None
...
>>> calc(lambda a, b: a / b, 10, 5)
2
>>> calc(lambda a, b: a / b, 10, 0)
>>> calc(lambda b, c, d: b * c / d, 6, 5, 3)
10
>>> calc(lambda b, c, d: b * c / d, 6, 5, 0)
>>>
123デフォルトの名無しさん:2011/09/20(火) 03:17:25.77
>>> def calc(func):
... try:
... return func()
... except ZeroDivisionError, e:
... return 0
...
>>> calc(lambda: 3/0)
0
>>>
124デフォルトの名無しさん:2011/09/20(火) 04:46:52.98
>>117
後で整形したらpythonの場合forブロックの最後間違えたりしないか?

emacsのメジャーモードはpythonに限らずどれもそうだけど
最初から整形した状態で入力するから、後で整形とかやらない。

整形違いだったらスマソ。

Emacs-Lispでpep8.pyを組み込んでリアルタイムにチェックしている
人もいるようだ。自分はマシンがショボいので毎度shellモードで実行
している。

文法チェッカのpycheckerは最初からバンドルされてる。

(以上、Linux版のemacsの場合。Windowsだとpep8.pyもpycheckerも
pypiから持ってくる必要があった。)

eclipseとかも使ってみたいのだが
常用している1024x600のネットブックだと使い物にならん。
ああいうのはマシンパワーが有り余っていて画面が広いブルジョア用。
125デフォルトの名無しさん:2011/09/20(火) 09:51:17.15
二次元配列をlolという変数に入れるとして、

while condfunc(lol):
  del lol[-1]

ってループかますと、抜けた後のlol[-1]のリストが地味に壊れるんだけど何故だろう
126デフォルトの名無しさん:2011/09/20(火) 10:21:18.49
>>125
説明不足だよ。
そもそもcondfuncて何?
配列要素の値を参照するだけ?
戻り値は?
これでは終了条件もよくわからない。
127デフォルトの名無しさん:2011/09/20(火) 10:28:26.45
ふざけんな
死ね
128デフォルトの名無しさん:2011/09/20(火) 10:49:00.36
>>125 が圧倒的に悪い
主に頭が
129デフォルトの名無しさん:2011/09/20(火) 13:05:59.09
>>125 は例え解決方法を教えてやっても
翌日は同様に頭の悪い質問してくる。
130デフォルトの名無しさん:2011/09/20(火) 20:17:45.60
アホすぎワロタw
131デフォルトの名無しさん:2011/09/20(火) 20:30:19.13
lolがlough out loudlyではなく
list of listsの略だと半日経って気づいた

とりあえず再現コードがほしい
132デフォルトの名無しさん:2011/09/20(火) 21:08:39.10
>>120, >>122, >>123
ありがとうございます!
lambda ってこういうふうに使えるんですね。
133デフォルトの名無しさん:2011/09/20(火) 21:35:46.62
lolがlough out loudlyではなく
「叫び」の顔文字だと半日経って気づいた

とりあえずネタにレスする気はないから再現コードはいらない
134デフォルトの名無しさん:2011/09/21(水) 11:19:41.47
>>119みたいな場面は結構あるから、例外処理用の式がほしい。
x = a / b except ZeroDivisionError 0
とかできないのかな?
135デフォルトの名無しさん:2011/09/21(水) 12:39:27.93
x = a / b if b != 0 else 0

こっちのほうが文字数少ないけど・・・
136デフォルトの名無しさん:2011/09/21(水) 15:50:25.52
>>135
まぁ、その場合はそうだし、事前に例外出さないようにチェックすることが簡単な場合も多いけどさ。
137デフォルトの名無しさん:2011/09/21(水) 16:49:35.72
Linux デスクトップのスクリプトの作成: 第 2 回 Nautilus のスクリプトを作成する
Python を使用して Nautilus を拡張する
http://www.ibm.com/developerworks/jp/linux/library/l-script-linux-desktop-2/
138デフォルトの名無しさん:2011/09/21(水) 20:02:23.66
Pythonでバナナがおやつに含まれるか判定する関数はありますか?
139デフォルトの名無しさん:2011/09/21(水) 21:54:57.82
def oyatsukana(banana):
if banana in oyatsu:
return true
return false
140デフォルトの名無しさん:2011/09/21(水) 21:59:10.02
Pythonのtrue/falseは大文字だお
141デフォルトの名無しさん:2011/09/21(水) 22:08:08.21
>>139
そもそも
banana in oyatsu
でTrue/Falseが返ってくるから
if文は不要
return banana in oyatsu
142デフォルトの名無しさん:2011/09/22(木) 17:05:11.91
pythonで巨大な配列をつくろうとするとMemoryErrorがでるんですけど
これは,pcのmemoryをいくら増やしても無駄なんでしょうか?
143デフォルトの名無しさん:2011/09/22(木) 17:22:07.83
64bit化汁
144デフォルトの名無しさん:2011/09/22(木) 19:03:15.78
>>142
代わりにyieldとかファイルとか
145デフォルトの名無しさん:2011/09/22(木) 21:40:16.63
pythonで生成したデータを利用してCygwinで違うプログラムを実行したいです。

そこで,pythonのプログラム(cygwin.py)を実行して,Cygwinを起動させるには
コード上にどのような記述をすればよろしいでしょうか?

また,開いたcygwinでコマンドを実行するにはどのような記述をすれば良いのでしょうか?
webで検索したのですが,上手く見つけることができませんでした。もしご存知でした教えていただけいると
助かります。
146デフォルトの名無しさん:2011/09/22(木) 21:51:00.88
そのプログラムを普通にsubprocessとかで実行してください
147デフォルトの名無しさん:2011/09/22(木) 21:54:15.44
>>145
os.system() ではアカンかった?
148146:2011/09/22(木) 21:59:50.92
>>145
>>146
そっちがあったわ。
ということで

subprocess 使ってください。
149デフォルトの名無しさん:2011/09/22(木) 22:43:41.56
Pythonをコンパイルした pyo とかって 逆アセンブルみたいな何かで
元のPythonコードを取り出したりできちゃうの?
150デフォルトの名無しさん:2011/09/22(木) 23:10:46.14
>Cygwinを起動

kwsk
151デフォルトの名無しさん:2011/09/23(金) 00:26:13.27
doxygenのスレはあるのに
sphinxのスレがないなあ
152デフォルトの名無しさん:2011/09/23(金) 17:10:58.26
Sphinxは習得が簡単すぎて悩む場面が全くなかった
153デフォルトの名無しさん:2011/09/23(金) 20:04:38.06
Linuxコマンドを実行し、標準出力のみを取得するにはどうすればいいでしょうか?
Webで調べて commands.getstatusoutput(cmd) で、リターンコードと標準出力が取れる
事はわかったのですが、これだと標準エラー出力まで混ざってきてしまいます。
標準出力だけを純粋に取り出したいです。
154146:2011/09/23(金) 20:16:53.33
>>153
パイプ。
155デフォルトの名無しさん:2011/09/23(金) 20:17:35.04
subprocess 使ってください。
156デフォルトの名無しさん:2011/09/23(金) 20:26:25.78
tesuto
157デフォルトの名無しさん:2011/09/23(金) 20:30:08.26
標準のreモジュールではPOSIXの文字クラスやユニコード属性は使えませんか?
制御文字を除去する目的で次のように書きたいのですが無理みたいです

import re, urllib
s = r'foo\0bar'#ヌルバイト文字を含む文字列
re.sub(r'[[:cntrl:]]', '', s)
re.sub(r'\p{Cc}', '', s)

reモジュールのマニュアルにもないようなので無理かもしれませんが代替方法があればおしえてください
勿論、通常の文字クラスで列挙するだけでも対応可能ですが・・
158デフォルトの名無しさん:2011/09/23(金) 21:44:57.24
>>155
subprocessなんかファイルオブジェクトが返ってきたりするみたいだし
使い方難しそう・・・・・。
色々subprocessも調べてはいるんですが、どうしてもコードが長くなりそうですね・・。

>>154
パイプですか?パイプというかリダイレクトを上手く使って
cmd 2> /dev/null
とかをcommands.getstatusoutputに食わせても、エラー出力も混ざってくるっす。
bash上で実行すると標準出力だけになるんですけどね・・・・。
159デフォルトの名無しさん:2011/09/23(金) 21:53:54.66
>>158
from subprocess import Popen, PIPE
p = Popen(cmd, stdout=PIPE, stder=PIPE, shell=True)
print p.communicate()[0]

shell=Trueは必要なかったら外してね
160デフォルトの名無しさん:2011/09/23(金) 22:07:30.50
馬鹿には無理
161158:2011/09/24(土) 00:53:13.49
>>160
バカですみません・・・。

>>159
レスありがとうございます。
stder=PIPE を stderr=PIPE に修正しましたが、それ以外は
このソースで問題なく動きました!ありがとうございます。
shell=True は必要みたいです。無いと動かないです。
162デフォルトの名無しさん:2011/09/24(土) 14:14:12.24
すいません、
mod_wsgiってmod_pythonみたいにコードを埋め込むような使い方って出来ないのでしょうか?
163デフォルトの名無しさん:2011/09/24(土) 20:29:15.69
>>162
できない。WSGIはWebアプリケーション専用の仕様。

WSGIやるなら nginx + uwsgi もおすすめ。
164デフォルトの名無しさん:2011/09/25(日) 02:44:43.59
>>159
これもっと簡単にならないのかな。
Rubyとかperlだと `ls -l` とかで済むのに、これはちょっと長い。
import subprocess
result = subprocess.exec('ls -l')
ぐらい簡単にしてほしい。
165デフォルトの名無しさん:2011/09/25(日) 03:01:27.43
>>164
RubyとかPerlでやるんじゃ駄目なん?
166デフォルトの名無しさん:2011/09/25(日) 04:02:49.39
>>164
import popen2
popen2.Popen3('ls -l')
167デフォルトの名無しさん:2011/09/25(日) 04:04:22.69
間違えたので訂正
import popen2
popen2.popen3('ls -l')[0].read()
168デフォルトの名無しさん:2011/09/25(日) 07:50:27.39
import subprocess
subprocess.exec_ = lambda s: subprocess.Popen(s, stdout=subprocess.PIPE, shell=True).communicate()[0]
print subprocess.exec_('ls -l')
169デフォルトの名無しさん:2011/09/25(日) 10:47:07.81
Python3.xだとsubprocess.getoutputってのがある
170デフォルトの名無しさん:2011/09/25(日) 11:01:48.78
>>164
結局、こうゆう短絡的な要望に「やり方は一つ
」の精神が押し潰されて行くんだな。
171デフォルトの名無しさん:2011/09/25(日) 11:29:44.34
Pythonでは実直に書けばいいんだよ。
どっかの中二病言語みたいに無理に短くする必要はない。
172デフォルトの名無しさん:2011/09/25(日) 12:06:54.79
173デフォルトの名無しさん:2011/09/25(日) 12:38:38.18
>>164
Pythonはあくまで汎用のスクリプト言語であって、特定の分野に対して大きなサポートをしない言語。
PerlやRubyはテキスト処理やCUIに対して特別なサポートをしてる言語だから、そういうのが可能なだけ。
だから、CUIのお供に使うのであれば、PerlやRubyのほうが上なのは当たり前なのよ。
174デフォルトの名無しさん:2011/09/25(日) 12:39:56.79
>>164
結局コマンドの結果に対して何らかの処理をするんだから文字列よりもパイプでもらったほうが便利だろ
175デフォルトの名無しさん:2011/09/25(日) 12:47:35.99
>>174
そういう2択の問題じゃないんじゃないか
Perlでもパイプとして開きたければできるわけえ

>>164は、Javaが
BufferedReader br = new BufferedReader(new InputStreamReader(System.in, charset));
とか書くのウゼーとか言われるのと同じだと思う

大クラス主義/小クラス主義の違いかもな
176デフォルトの名無しさん:2011/09/25(日) 13:16:55.78
>>173
「バッテリー同梱」の哲学は気にいってる。便利にするためにこの哲学を崩して欲しくない。

PerlとかPHPでは何するにもアーカイブからライブラリ持ってこなきゃならん。
しかもライブラリのバージョンがどーたらこーたら。めんどくせー。
177デフォルトの名無しさん:2011/09/25(日) 13:50:47.49
現に、1行になるか2行になるかの違いしか生じてないじゃん。

>>172
読んだ。Flaskを褒めてるね。
178デフォルトの名無しさん:2011/09/25(日) 14:27:20.68
>>176
PerlもPHPも、とある分野に特化した言語だからな(Perlはテキスト処理やCUIのお供、PHPはWebプログラミング)
それ以外の分野に対応するのは結構面倒だったりする。
むしろ、それだけの特化言語でアーカイブから取ってくれば済むだけになってるだけ、マシと言えるぐらい。
179デフォルトの名無しさん:2011/09/25(日) 14:27:56.75
塵も積もれば山となるんだよ低能。
180デフォルトの名無しさん:2011/09/25(日) 15:06:25.80
Python勉強し始めたけど2と3で違いすぎて勉強しにくいぞこの野郎
Rubyにしとけばよかった
181デフォルトの名無しさん:2011/09/25(日) 15:08:55.01
>>180
いやそれは君の実力不足が原因だから
2と3の違いなんて10分で理解できる
182デフォルトの名無しさん:2011/09/25(日) 15:11:52.37
>>180
今度はrubyの1.8と1.9が違い過ぎてとかなるぞ

そんな訳でhaskellに(ry
183デフォルトの名無しさん:2011/09/25(日) 15:16:48.17
[ "hoge", "foo", "bar"]
のように配列の中にキーワードを入れていおります。
文字列の中にそのキーワードが含まれるか確認したいのですが、
大文字と小文字の違いを無視してマッチさせることは出来ませんでしょうか?
"Hoge"や"FoO"にもマッチさせたいです。

また、できれば半角と全角の違いにもマッチさせたいのですが、そのようなことは出来ませんか?
184デフォルトの名無しさん:2011/09/25(日) 15:28:41.23
>>183
そうゆうのは普通ノーマライズした配列を作って、それで比較するもんだ。
185デフォルトの名無しさん:2011/09/25(日) 15:37:27.14
なんで?
186デフォルトの名無しさん:2011/09/25(日) 15:41:00.05
その方が楽だから
187デフォルトの名無しさん:2011/09/25(日) 15:51:30.76
>>177
Flask なんか出てこないぞ。何を言ってるんだ?
188デフォルトの名無しさん:2011/09/25(日) 15:57:20.33
普通ってなんですか
189デフォルトの名無しさん:2011/09/25(日) 16:04:07.33
ここは人工無脳のトレーニングルームじゃありませんよ
190デフォルトの名無しさん:2011/09/25(日) 16:18:28.27
Perl忍者は偉大
Perlの知名度を上げPerl業界に大きく貢献した
191デフォルトの名無しさん:2011/09/25(日) 16:28:12.52
大文字/小文字の区別なんて、"re.IGNORECASE"フラグでいいだろうに、
わざわざノーマライズって単語を出した理由が分からん。
192デフォルトの名無しさん:2011/09/25(日) 16:45:10.08
配列がバカでかいとかでなければ
word in map(lambda e: e.lower(), words)
193デフォルトの名無しさん:2011/09/25(日) 16:46:33.45
>>191
ド素人すぎる
194デフォルトの名無しさん:2011/09/25(日) 16:53:30.92
説得させたきゃ根拠を出せよ。
おまえらはいつまで経っても学習しないな。
195デフォルトの名無しさん:2011/09/25(日) 17:03:32.91
>>194
じゃあコード書いてくれ。
196デフォルトの名無しさん:2011/09/25(日) 17:43:53.12
>>195
どうして私が書かなくてはならないんだ。
自分の主張は自分でしろよ。
197デフォルトの名無しさん:2011/09/25(日) 17:48:09.92
なんという腰抜け
198デフォルトの名無しさん:2011/09/25(日) 17:53:04.70
頭の悪い奴は口も性格も悪い
そして他力本願だ
199デフォルトの名無しさん:2011/09/25(日) 17:58:21.88
ノーマライズするコードは>>192で出てるじゃん
200デフォルトの名無しさん:2011/09/25(日) 18:20:48.31
正規表現で全角スペースをマッチさせたいんですが
この書き方だとダメなようで

p = re.compile('[ ]+')
p.match(text):

マッチさせる書き方を教えて頂けないでしょうか?
201デフォルトの名無しさん:2011/09/25(日) 18:21:48.24
>>191がダメな理由が分からん
マジで教えてください。
202デフォルトの名無しさん:2011/09/25(日) 18:22:54.93
/hoge/iで済まないからだろう
203デフォルトの名無しさん:2011/09/25(日) 18:22:58.40
>>200
match()は完全一致なので部分一致させたいならsearch()
204デフォルトの名無しさん:2011/09/25(日) 18:25:59.01
>>202
それで済むように思うんだが
205デフォルトの名無しさん:2011/09/25(日) 18:29:42.17
re.IGNORECASE + re.UNICODE

なら

hoge
HoGe
hOgE

でも全部マッチするんだっけ?
206デフォルトの名無しさん:2011/09/25(日) 18:30:34.27
俺は>>193じゃないけど……

>>201
キーワードのリストがあるとして、xがそれに含まれるかどうかというテストが
それぞれにre.match()を試みる線形な検索になるでしょ

キーワードをあらかじめ小文字化してsetに入れておけば、
if x.lower() in keywords:
だけでテストできて、ハッシュ検索だからO(1)で済むよ
207200:2011/09/25(日) 18:46:25.38
>>203
済みません、書き方が悪かったです

全角スペースのみの文字列にマッチさせたいので
完全一致でいいかと
試しにsearch()をやってみたんですがダメでした

分かる方いれば、アドバイスお願いします
208デフォルトの名無しさん:2011/09/25(日) 18:47:04.11
条件が勝手に増えていってないか?
209デフォルトの名無しさん:2011/09/25(日) 18:52:05.42
>>307
ふーん
ならPython2系かな?
3かもしれないと思ったのでスルーしたけど
もし2系で、全角スペースみたいな非ASCII文字のテキスト処理をするときは
unicodeでやらんとだめ

上の例だとリテラルにuプレフィックスつけて
textもunicodeにdecodeしてみて
210デフォルトの名無しさん:2011/09/25(日) 18:53:29.25
>>207
取り合えず、やりたい事を箇条書きしてみては?
回答者も、その方が答えやすいと思う
211200:2011/09/25(日) 19:06:50.38
>>210
了解です具体的には

あるフォームからの入力で、半角or全角スペース、改行だけの投稿を検出したい

というもので、こう書いたんですが
p = re.compile('[\s|\n| ]+')
全角スペースのみの投稿が素通りしてしまう状態です
212200:2011/09/25(日) 19:17:29.25
>>209
レス見落としてました済みません。
djangoを利用する手前、ご推察の通り2系です

で、ご指摘の通りuプレフィックスつけて
みたら上手く検出できました

ありがとうございます!
213デフォルトの名無しさん:2011/09/25(日) 19:22:46.66
どじゃんぐりころころ
214デフォルトの名無しさん:2011/09/25(日) 19:23:15.14
どじゃんくりこ
215デフォルトの名無しさん:2011/09/25(日) 19:51:58.43
性器表現は襲いからなぁ
216デフォルトの名無しさん:2011/09/25(日) 20:09:26.33
正規表現なんて使わなくても、↓unicode.isspace()で調べられるんじゃない?

all(c.isspace() for c in u"  \n\t \n \t a")
217デフォルトの名無しさん:2011/09/25(日) 20:11:02.89
>>215
くそっ!こんなくだらないレスで吹いちまった・・・
218デフォルトの名無しさん:2011/09/25(日) 20:20:54.08
Pythonなんかやっても日本には仕事がない。
趣味ならいいけど。
219デフォルトの名無しさん:2011/09/25(日) 20:27:18.13
JavaScriptっぽく
obj.key

obj['key']
がとってこれるようにしたdictって、なんていうんだっけ?
前にこのスレかどっかで見た覚えがあるんだが。
220デフォルトの名無しさん:2011/09/25(日) 20:31:19.61
__getitem__ を定義しただけじゃないの?
221デフォルトの名無しさん:2011/09/25(日) 20:34:21.35
>>219
Bunchだった
ttp://code.activestate.com/recipes/52308-the-simple-but-handy-collector-of-a-bunch-of-named/
Python界隈ではよく知られたクラス名らしい。
222デフォルトの名無しさん:2011/09/25(日) 20:39:15.78
急に伸びたから
また荒れてるのかと思った。
223デフォルトの名無しさん:2011/09/25(日) 23:30:46.42
Pythonで静的変数を使うことは出来ませんか?
forで呼ばれる関数があるのですが、前回呼ばれた時に計算した値を保存しておきたいです。
224デフォルトの名無しさん:2011/09/25(日) 23:41:47.91
225デフォルトの名無しさん:2011/09/26(月) 08:11:39.42
mysql-pythonインストール済なのにdjangoのsyncdbコマンドでimproperly configuredエラー(No module named MySQLdb)が発生します
どうすりゃいいんでしょうか
226デフォルトの名無しさん:2011/09/26(月) 10:54:00.25
複数バージョンのPythonが入ってるとか、virtualenvしてるとか、いろいろ。
227デフォルトの名無しさん:2011/09/26(月) 23:24:59.37
>>219
リードオンリーでいいんだったらnamedtupleで
228デフォルトの名無しさん:2011/09/27(火) 01:49:47.20
a1=[0.1,0.2,0.3]
a2=[0.4,0.6,0.8]
のような一次元のlistかarrayから

b=[[0.1,0.2,0.3], [0.4,0.6,0.8]]

c=[[0.1,0.4], [0.2,0.6], [0.3,0.8]]
といった多次元のlistかarrayを生成するコマンドはあるのでしょうか?
229デフォルトの名無しさん:2011/09/27(火) 02:28:57.57
>>> map(list, (a1, a2))
[[0.1, 0.2, 0.3], [0.4, 0.6, 0.8]]
>>> map(list, zip(a1, a2))
[[0.1, 0.4], [0.2, 0.6], [0.3, 0.8]]
230デフォルトの名無しさん:2011/09/27(火) 05:43:06.05
>>124
Emacs の M-; で行末にコメントをつけたあとに pep8 をかけると、
しょっちゅう「E261 at least two spaces before inline comment」
って言われるんだけど、あれってカスタマイズできないの?
231デフォルトの名無しさん:2011/09/27(火) 05:50:25.35
>>230
pep8.pyを?それともM-;の方を?

ぼかぁよう分からんからその指摘も一理あるかなと
指示どおりに全部ソースを書き換えたけど。
232デフォルトの名無しさん:2011/09/27(火) 11:45:36.13
>>228
数値データならNumPyの使用も検討したら?
233デフォルトの名無しさん:2011/09/27(火) 16:41:12.84
>>231

どうも。pep8 で無視するオプションをつけることも可能だけれども、それを
つけたら意味ないような気がするので、Emacs のほうでどうにかならないかと
思ったのです。せっかく pep8 を通るように直しても、もう一度 M-; を
かけると元の木阿弥になるし。

ただパッと見たかんじだと、コメントが始まる位置が
max(comment-column, コメントを除く行の長さ+1) に固定されているようで、
ちょっと難しそう。
234デフォルトの名無しさん:2011/09/28(水) 00:50:53.25
PySideはバグがだいぶ減ったね。
自分のQtアプリは全部動くようになった。
235デフォルトの名無しさん:2011/09/28(水) 00:58:41.05
PySideはノキアスポンサー撤退で次のスポンサー探しに難航してるとか
Qtスレで読んだけど大丈夫なんだろうか
236デフォルトの名無しさん:2011/09/28(水) 10:00:56.21
PyQtあるからいらねって人と、PySide開発自体はやぶさかではないが、なんでそれをフリーで公開してやんなきゃいけねーんだって人とに分かれそう。
237デフォルトの名無しさん:2011/09/28(水) 10:56:10.68
PyQtの代替なんだから公開しなきゃ意味ないじゃん
238デフォルトの名無しさん:2011/09/28(水) 12:19:07.92
PyQtがLGPLになるのを拒むから、PySideが作られたのよ。
239デフォルトの名無しさん:2011/09/28(水) 15:59:44.80
>>229
ありがとうございました。助かりました。
240デフォルトの名無しさん:2011/09/29(木) 16:20:27.77
クラスのメソッドの名前を exec_() みたいにしてるコードをどこかで見たんだけど、これって必要あるのかな?
普通の関数とか変数だったら標準ライブラリ内の名前との衝突を避けるべきなのはわかるんだけど
241デフォルトの名無しさん:2011/09/29(木) 16:54:08.91
>>240
標準でありそうな関数名だから、とりあえずアンダースコア付けた関数名にしといたんじゃない?
242デフォルトの名無しさん:2011/09/29(木) 16:58:04.49
>>240
2.xだとexecは関数ではなくexec statementで使われるキーワードだから
(printも同じ)
243デフォルトの名無しさん:2011/09/29(木) 17:00:16.13
>>242
ああそうかキーワードだったのか
or_ とか in_ の親戚だね。サンクス
244デフォルトの名無しさん:2011/09/30(金) 09:05:49.70
mod_wsgi関連のブログ記事とかで、たまに import cgi って書いてるソースを見るんですが、cgiモジュールを使っていてもwsgiとして動いているのでしょうか?

それだとcgiとして動いてしまうのではないかと思うのですが。
245デフォルトの名無しさん:2011/09/30(金) 09:11:36.53
えーっ、いくらなんでもドキュメントぐらい読んでから質問しようよ
246デフォルトの名無しさん:2011/09/30(金) 12:04:17.96
複数行のテキストデータを行毎に分割しようとして、
re.split('^', text) として分割されずに悩んでいたら、リファレンスマニュアルに、
「空のパターンマッチでは、文字列を分割しないことに注意して下さい」
と書いてあり、 re.split() ではできないことがわかったので死のうと思います。

どうせなら悔いなく死にたいと思いますので、
空のパターンマッチでも分割するうまい方法があれば教えていただけると嬉しいです。
247デフォルトの名無しさん:2011/09/30(金) 12:37:14.52
248デフォルトの名無しさん:2011/09/30(金) 12:58:43.42
>>244
importしただけで挙動が変わるって、どんだけcgiモジュールは強力なんだよ
249デフォルトの名無しさん:2011/09/30(金) 14:11:57.31
>>246
「'^'」は空じゃないだろ。そうじゃなくて、
re.compile(r'^', re.M).split(string)
としなきゃいけないんじゃないか?
まあ string.splitlines(True) でいいけど。
250デフォルトの名無しさん:2011/09/30(金) 16:20:31.27
Pythonの環境がなくてもexe形式で実行できない?
251246:2011/09/30(金) 16:31:38.76
>>247 >>249
ありがとうございます。
とりあえずやりたいことは string.splitlines(True) でできることがわかりました。

それで、もう死ぬのでいいんですけれども、

> 「'^'」は空じゃないだろ。
「空のパターンマッチ」は「空文字列にマッチし得るパターン」と読みました。
ドキュメントに挙げられている例も 'x*', "(?m)^$" となっており、
位置にのみマッチする '^' も同様のケースではないかと考えまして、
実際の挙動とも合致しているように思います。

> re.compile(r'^', re.M).split(string)
これ、私の環境では動かないようなのですが、何かおかしいでしょうか?

>>> re.compile(r'^', re.M).split("foo\n\nbar\n")
['foo\n\nbar\n']
252ゆうすけ:2011/09/30(金) 16:32:56.25
>>244
CGIは標準入出力でWebサーバと通信して動的ページを生成する仕組み。
なので、標準入出力が扱える言語なら何でも(シェルスクリプトでも)CGIプログラムは書ける。
cgiモジュールはPythonでCGIを書くのを助ける単なる便利関数の詰め合わせ。このモジュールが
なくてもCGIは書ける。このモジュールは、URIパラメータを解析する機能とかも含んでいるので、
CGIを書く以外の場面(e.g. WSGIクライアントを書くとき)でも使える。そういうこと。
253デフォルトの名無しさん:2011/09/30(金) 16:43:52.76
>>251
In [2]: re.compile(r'^', re.M).findall("foo\n\nbar\n")
Out[2]: ['', '', '', '']

In [3]: re.compile(r'\n', re.M).split("foo\n\nbar\n")
Out[3]: ['foo\n\nbar\n']

やはり、マッチ結果が空文字列になるときは分割しないようで。
254デフォルトの名無しさん:2011/09/30(金) 16:45:56.57
ミス
In [3]: re.compile(r'^', re.M).split("foo\n\nbar\n")
Out[3]: ['foo\n\nbar\n']
255244:2011/09/30(金) 20:07:59.55
>>245
すいません。英語とか片言の日本語みたいな資料ばかりでなかなか理解出来なくて。

>>248
超初心者ですいません。

>>252
という事はcgiみたいな書き方をしても以下を書いていればwsgiとして動くと言う事ですね。

def application(environ, start_response):
start_response("200 OK",[('Content-Type','text/html')])

これで安心して「みんなのPython Webアプリ偏」を勉強する事が出来ます。
サラッと見たらcgiという文字が多いし発売時期が古かったので不安でした。

みなさんありがとうございました。
256デフォルトの名無しさん:2011/09/30(金) 20:26:56.35
255は素直なよい子
257デフォルトの名無しさん:2011/09/30(金) 22:34:01.40
まあ、WSGI周りはまともな日本語の資料がないよな。
258デフォルトの名無しさん:2011/09/30(金) 23:32:31.74
wsgiって正直よく分からない。cgiと同じ粒度の話なのかも分からない。
uwsgiとかもあってわけわかめ。あと上位互換のwsgi新規格の話とかもあるよね。
259デフォルトの名無しさん:2011/09/30(金) 23:54:42.20
[Web Browser] <== HTTP ==> [nginx] <==uWSGI Protocol==> [uWSGI] <== WSGI ==> [Flask]
260デフォルトの名無しさん:2011/10/01(土) 00:13:53.04
Apacheはオワコン
261デフォルトの名無しさん:2011/10/01(土) 00:20:37.09
アッコちゃんはマヤコン
262デフォルトの名無しさん:2011/10/01(土) 06:23:12.04
wsgiはマジで>>255の呼び出し可能オブジェクトからreturn 文字列かyield 文字列するだけ
正直フレームワークのノウハウ覚えるより自分で作ったほうが早い
263デフォルトの名無しさん:2011/10/01(土) 12:06:33.85
俺はマジコン
264デフォルトの名無しさん:2011/10/01(土) 23:55:51.29
pythonchallengeのlevel6で1000ちかいテキストファイルを順次開いていくって処理で
400くらいでIOErrorでtoo many open filesってエラーがでて例外処理がわからないんだけど
なんかどうすりゃいいのか教えて
265デフォルトの名無しさん:2011/10/02(日) 00:27:13.61
>>264
ファイルは使い終わったら閉じましょう。
OSは、同時に開けるファイルディスクリプタ数を制限しています。
266デフォルトの名無しさん:2011/10/02(日) 00:30:15.48
やった!レベル0クリア!
267デフォルトの名無しさん:2011/10/02(日) 00:37:32.75
>>265
あーお恥ずかしいかぎりですわ
どうもありがとう
おかげで今後閉じ忘れることなくなるだろうな
268デフォルトの名無しさん:2011/10/02(日) 01:54:56.43
それってOSの種類で制限の上限がかわったり制限が無かったりするの?
269デフォルトの名無しさん:2011/10/02(日) 01:56:14.39
OSってかファイルシステムの範疇になるような気がするけど……。
エロい人回答頼む
270デフォルトの名無しさん:2011/10/02(日) 03:21:43.16
Linuxは1プロセスの最大がデフォルトで1024 (ulimit -nで参照・変更可能)
Windowsは1プロセスの最大が2048 (stdio経由だとデフォルトで512)

(間違ってるかもしれません)
271デフォルトの名無しさん:2011/10/02(日) 05:20:19.14
あれ?

for filename in filelist: dosomething(open(filename).read())

みたいなのを 10万個くらいのファイルに対して実行してるけど、とくに叱られた
ことないんだが……

ちょっと調べたら、ここでは close() しないといけないように書かれていて、
http://stackoverflow.com/questions/1834556/does-a-file-object-automatically-close-when-its-reference-count-hits-zero

こっちでは参照がなくなったら勝手に close() するようなことが書かれている。
http://www.tutorialspoint.com/python/file_close.htm

272デフォルトの名無しさん:2011/10/02(日) 05:31:52.02
現行のCPythonは参照がなくなったらクローズする
けれど他のPython実装はそうするとは限らないし
CPythonも将来的にはどうなるかわからない
なので明示的決定的にclose()するかwithで書いたほうがいいよって話だろう
273デフォルトの名無しさん:2011/10/02(日) 10:47:48.94
>>271
stackoverflowのほうもよく読めば分かるのに……
CPythonの「実装では」参照カウントが0になるとクローズされるが、
Pythonが「言語仕様として」それを保障しているわけでもないし、
Jythonのような他の実装では、実際クローズされないと書かれている

>>264との違いは、単に書き方の違いだろうな
>>271の書き方ならリファレンスカウントならすぐ参照が破棄される
想像だけど、>>264
result = (dosomething(f.read()) for f in map(open, filenames))
みたいな書き方でもしてたんじゃないの
274デフォルトの名無しさん:2011/10/02(日) 14:27:31.26
できる限りwith文を使いませう。
275デフォルトの名無しさん:2011/10/02(日) 14:48:40.70
ファイル処理の場合はclose()よりもまずwithを学ぶべきってぐらい重要な文だよね
276デフォルトの名無しさん:2011/10/02(日) 16:54:58.77
withって便利だけど、何にでも使えるから、何が起こってるのか分かりにくくなるよね。
あと、複数同時に使うとインデントがどんどん深くなるのも嫌な感じ。
277デフォルトの名無しさん:2011/10/02(日) 17:19:08.04
3.1から
with A() as a, B() as b:
って書けるようになったよ
278デフォルトの名無しさん:2011/10/02(日) 17:25:04.02
>>277
なんだってー!

2.7でも使えるのか。これはいい。
279デフォルトの名無しさん:2011/10/02(日) 18:27:51.16
with文は信用できない
                例外信者より
280デフォルトの名無しさん:2011/10/02(日) 19:09:46.74
with文使ってても例外はハンドリングできるでしょ。
何か違う話?
281デフォルトの名無しさん:2011/10/02(日) 19:11:13.54
withはC#のusingをパクったんだっけ。
282デフォルトの名無しさん:2011/10/02(日) 19:29:41.25
>>265
How meny files ? 15[ENTER]
283デフォルトの名無しさん:2011/10/02(日) 20:40:30.63
with って break できんの?
284デフォルトの名無しさん:2011/10/02(日) 20:41:56.40
>>282
Ok.
TM[ENTER]
285デフォルトの名無しさん:2011/10/02(日) 21:05:46.92
MS-DOSとか懐かしいけど、なんかいろいろ違う気がw
286デフォルトの名無しさん:2011/10/02(日) 21:19:59.24
「meny」は酷いよ〜
287デフォルトの名無しさん:2011/10/02(日) 21:21:07.89
>>281
インスパイア
288デフォルトの名無しさん:2011/10/02(日) 21:25:08.60
>>281
リスペクト
289デフォルトの名無しさん:2011/10/02(日) 21:51:55.25
>>281
PythonがC#にパクられた
290デフォルトの名無しさん:2011/10/03(月) 00:25:23.91
リスペクトってLispから引っ張ってくることだよね
291デフォルトの名無しさん:2011/10/03(月) 01:10:50.59
手続き的と宣言的の調和
292デフォルトの名無しさん:2011/10/03(月) 01:15:14.49
pass
293デフォルトの名無しさん:2011/10/03(月) 02:27:03.81
角電池
294デフォルトの名無しさん:2011/10/03(月) 05:20:48.06
>>281

Common Lisp の場合、ファイルをオープンするには関数 open を使います。オー
プンしたファイルは必ずクローズしてください。この操作を行う関数が close です。

そして Common Lisp には、この 2 つの動作を行ってくれる便利なマクロ
with-open-file が用意されています。

http://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp07.html
これのことですね。
295デフォルトの名無しさん:2011/10/03(月) 13:11:46.34
僕の肛門もclose()されそうです。
296デフォルトの名無しさん:2011/10/04(火) 10:26:41.07
cron 等のOSが持っているタスクスケジューラ機能を使わず、Pythonが持っている独自のスケジューラライブラリってありますか?

出来れば標準で、初心者に優しいライブラリであるとありがたいです。
297デフォルトの名無しさん:2011/10/04(火) 12:23:19.64
daemon書いて時間が来るまで定周期でsleepかましつつ回して実行じゃだめ?
常時似非CRON用Pythonスクリプトが走っている事になるけど・・・
298デフォルトの名無しさん:2011/10/04(火) 13:57:30.11
>>296
http://www.python.jp/doc/release/library/sched.html
標準ならこういうのになるけど……。
299デフォルトの名無しさん:2011/10/04(火) 16:05:47.00
pythonの学習に適したソースコードが載っているサイトはないですか?
300デフォルトの名無しさん:2011/10/04(火) 19:08:03.84
cookbook見とけ
301デフォルトの名無しさん:2011/10/04(火) 21:06:44.78
MLの人ですか?
302デフォルトの名無しさん:2011/10/04(火) 23:40:13.86
マルチスレッド対応のエロ画像自動巡回ダウンローダを作ると勉強になるよ。
303デフォルトの名無しさん:2011/10/05(水) 00:30:08.08
でエロ画像はどうやって識別するんだ?
間違って相撲取りの写真でも持ってこられたら悲惨だぞ
304デフォルトの名無しさん:2011/10/05(水) 00:51:54.88
305デフォルトの名無しさん:2011/10/05(水) 02:55:26.83
ジム・オルークじゃねえか
306デフォルトの名無しさん:2011/10/05(水) 08:00:45.40
画像巡回ダウンロードソフトは多くの人が一度は作ったことがあるはず
そしてそれはお気に入りのエロサイト前にして煩悩のみで作成するから
まったくストレスを感じないし集中できてPythonの習得にも役立つという優れもの
307デフォルトの名無しさん:2011/10/05(水) 08:19:26.30
>>306
その手があったか!作りたいネタなくて困ってたんだ!ありがとう!ありがとう!
308デフォルトの名無しさん:2011/10/05(水) 10:12:50.19
「リビドー駆動開発」ってやつか
309デフォルトの名無しさん:2011/10/05(水) 10:21:19.67
>>308
www
310デフォルトの名無しさん:2011/10/05(水) 16:33:04.82
途中で抜いちゃったら頓挫する可能性が高いな
311デフォルトの名無しさん:2011/10/05(水) 17:38:26.36
どうせ小一時間もすればまた復活するだろ。
賢者モードではリファクタリング&デバッグするなどメリハリ付けると良い。
312デフォルトの名無しさん:2011/10/05(水) 21:39:31.77
class A:
def __init__(self,x):
self.x = x
a = A(1)

class B:

b = B()
b.x = 1
の違いは初期化のタイミング以外にはないと思っていいですか?
313デフォルトの名無しさん:2011/10/05(水) 22:32:51.69
くだすれPython(超初心者用) は終了?
314デフォルトの名無しさん:2011/10/05(水) 22:50:58.77
PyQtの日本語の専門書はでないのかな?
315デフォルトの名無しさん:2011/10/05(水) 23:16:08.10
Windows環境のIDLEでマルチプロセスの結果を表示させたいのですが、
表示されません。
表示させる方法を教えていただけないでしょうか。

コードは標準ライブラリの説明に載っていた以下のものを試しました。

from multiprocessing import Process
def f(name):
 print 'hello', name

if __name__ == '__main__':
 p = Process(target=f, args=('bob',))
 p.start()
 p.join()

f関数のprintのところをファイルの入出力に書き直して試して、プロセスが動いてるのは確認できたのですが、
print文の結果がIDLEに表示されないです。
316デフォルトの名無しさん:2011/10/06(木) 04:51:18.06
マルチスレッドやマルチプロセスでprintが使えると思わないこと
317デフォルトの名無しさん:2011/10/06(木) 06:21:44.62
メインのスレッドにデータ渡してメインのスレッドがprintするようにしないと
ダメなんじゃね?
318デフォルトの名無しさん:2011/10/06(木) 06:31:22.82
コマンドプロンプトでは動くのならIDLEを捨てる
319デフォルトの名無しさん:2011/10/06(木) 07:21:35.74
Windowsを捨てる
320デフォルトの名無しさん:2011/10/06(木) 08:39:25.93
occu.py
321デフォルトの名無しさん:2011/10/06(木) 12:23:39.44
>>316-320
お返事ありがとうございます。
コマンドプロント&PowerShellでプロセスからのprintが表示されることを確認しました。
IDLEだとメインに表示データ渡さないとダメなんですね。
occu.pyはちょっと何言ってるか分かりませんでした。
322デフォルトの名無しさん:2011/10/06(木) 17:33:58.39
Djangoチュートリアルをやり始めたのですが、
ttp://djangoproject.jp/doc/ja/1.0/intro/tutorial01.html
のページ最下部付近の
>>> p.choice_set.create(choice='Not much', votes=0)
をやろうとすると
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/django/db/models/fields/related.py", line 436, in create
return super(RelatedManager, self.db_manager(db)).create(**kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/manager.py", line 138, in create
return self.get_query_set().create(**kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 358, in create
obj = self.model(**kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/base.py", line 364, in __init__
raise TypeError("'%s' is an invalid keyword argument for this function" % kwargs.keys()[0])
TypeError: 'choice' is an invalid keyword argument for this function
と出てきます。

該当部分は英語ページでも同様の記述ですし、
ブログ等で検索してもエラーが出たという記述はありません。

どうすればエラーが解消するのでしょうか。
宜しくお願いします。
323デフォルトの名無しさん:2011/10/06(木) 18:17:37.27
>>322
$ python manage.py sql polls
の結果はどうなってる?正しい?
(できれば貼りつけて)

$ python manage.py syncdb
はした?

models.pyにタイポはないか?
324デフォルトの名無しさん:2011/10/06(木) 18:19:18.72
Djangoは学習コストが高杉晋作。
325デフォルトの名無しさん:2011/10/06(木) 18:28:30.02
そうでもない
326322:2011/10/06(木) 18:52:45.52
>>323
$ python manage.py syncdbは実行しました。
models.pyのタイポはないと思います。エラーが出てから、全文コピペで書き直しましたので。。
$ python manage.py sql polls の結果は

/usr/local/lib/python2.6/dist-packages/django/db/__init__.py:60: DeprecationWarning: Short names for ENGINE in database configurations are deprecated. Prepend default.ENGINE with 'django.db.backends.'
DeprecationWarning
BEGIN;
CREATE TABLE "polls_poll" (
"id" integer NOT NULL PRIMARY KEY,
"question" varchar(200) NOT NULL,
"pub_date" datetime NOT NULL
)
;
CREATE TABLE "polls_choice" (
"id" integer NOT NULL PRIMARY KEY,
"poll_id" integer NOT NULL REFERENCES "polls_poll" ("id"),
"choice" varchar(200) NOT NULL,
"votes" integer NOT NULL
)
;
COMMIT;

こうなっています。polls_pollのpub_dateがチュートリアルと少し異なりますが、それ以外は同一のようです。。

実は書き込みしてからずっと、
エラーファイルに出てきているbase.pyとかquery.pyとか解読しようと試みていたのですが、
わけわかんなくて泣きそうだったので、レス頂けただけでも嬉しくて涙出そうです。。
vmwareにubuntu10.10を入れて練習しているのですが、
何か環境に問題があるのかもしれませんので、windowsで改めてやってみます。
教えてちゃんですみませんでした。ありがとうございました。
327デフォルトの名無しさん:2011/10/06(木) 18:56:09.22
>>322
ページの真ん中あたりの
コラムのmax_length にまつわるエラー
の直前の記述を丸ごとmodel.pyに入れた?

直接にはここの
choice = models.CharField(max_length=200)
が無いって言っていると思われ。
328デフォルトの名無しさん:2011/10/06(木) 19:01:07.86
>>326
作成されたDBをDB付属のツールで開いて
表示された通りのテーブルが作成されてる?
329デフォルトの名無しさん:2011/10/06(木) 19:09:08.52
しつこいが、
DjangoとかRoRみたいな巨大なフレームワークはおすすめしない。
330デフォルトの名無しさん:2011/10/06(木) 19:19:26.89
>>329
pythonでおすすめと言うとどれ?

python -m SimpleHTTPServer

とか?
331デフォルトの名無しさん:2011/10/06(木) 19:25:17.05
>>324
馬鹿には無理
332デフォルトの名無しさん:2011/10/06(木) 19:26:28.51
>>330
WSGI
333デフォルトの名無しさん:2011/10/06(木) 19:26:31.52
独り言だが、
bisect モジュールの各関数に、keyオプション引数があれば超便利なのに、と思い検索したが、
散々ガイシュツな議論なのね。
要らない派は、keyがあると、不適切なコード(多数回bisectが呼ばれる状況でkey使うと、
無駄にkey関数が呼ばれて遅くなる)を書く馬鹿がいるから、という理由だが、、、、
Zen of Python に、foolproof であるべし、なんてあったっけ?
334デフォルトの名無しさん:2011/10/06(木) 19:27:08.56
>>330
werkzeug
335デフォルトの名無しさん:2011/10/06(木) 19:37:12.14
>>334
DB無かったらこれでいけるな。
336デフォルトの名無しさん:2011/10/06(木) 20:13:04.77
確かに多すぎて迷うなぁ
http://wiki.python.org/moin/WebFrameworks
337322:2011/10/06(木) 21:38:10.77
327さんと328さんにレス頂いてから再度コピペしたりテーブルを確認したりしたのですが原因がわからず、
もう一度Djangoのインストールからやり直したら問題なくできました。

>>326で偉そうにsyncdb実行しましたとか言ってしまったのですが、
もしかすると最初に実行したときにmodels.pyにタイプミスがあって、
そのミスを放置した状態でsyncdbを実行したまま苦しんでいたのかもしれません。

>>323さんにご指摘頂いた後に再度syndbを実行してもうまくいかなかったので、
実は原因は全く別のところにあるのかもしれませんが・・・


Djangoは私には早いかもしれませんが、もうしばらく頑張りたいと思います。
初心者の馬鹿な質問に付き合わせてしまって申し訳ありませんでした。レスくれた皆さんに感謝しています。
338デフォルトの名無しさん:2011/10/06(木) 21:49:20.24
DjangoはSQLAlchemyが標準なら使ったかもしれないが組み込みの奴は貧弱すぎる
339323:2011/10/06(木) 22:40:00.83
>>337
>ミスを放置した状態でsyncdbを実行したまま苦しんでいたのかもしれません
Djangoは既存モデルのフィールド変更に対して自動でマイグレート(スキーマを変更)
できないから、単純に
フィールド名のタイポ→syncdb→修正→syncdb
ではうまくいかない。
Djangoではこういう場合、Southというツールを使う。
(修正後にSouthでスキーマの変更を反映する)
とはいえ、今回はチュートリアルの序盤ということだから、
素直にプロジェクトを作りなおすのが無難か。

一般的にスキーマの変更は面倒なことが多い。
だからこそモデルとして分離することが当たり前になっている。
それで、例えばDjangoだったらmodels.pyを編集するときは特に慎重に。
(もちろん間違えてもどうにかなるけれども)
340323:2011/10/06(木) 22:50:17.63
追記

DeprecationWarningとある。
今回のエラーとは関係なさそうだが、警告は災いの種だから早めに潰したほうがいい。
http://all-rounder-biz.blogspot.com/2011/04/djangodeprecationwarning-short-names.html

あとSouthのドキュメントも
http://ae35.bitbucket.org/south-doc-ja/index.html
341デフォルトの名無しさん:2011/10/06(木) 23:59:47.35
俺はWebプログラマじゃないから、
Flaskちゃんで十分だ。めちゃ使いやすい。
永続化はMongoDBとSQLAlchemyを使い分け。
342デフォルトの名無しさん:2011/10/07(金) 06:54:46.87
ZopeとかPloneも複雑すぎてわけわからんかったなぁ。
343デフォルトの名無しさん:2011/10/07(金) 08:11:11.43
周りにノウハウ持ってる人いないなら軽量貧弱フレームワーク使うか作ったほうが楽だよな
勉強会とか言ってわざわざノウハウ共有するのもいっそアホくさいし
344デフォルトの名無しさん:2011/10/07(金) 09:06:27.43
ドジャンゴころころは重厚長大な戦艦大和。
小さい駆逐艦の艦隊にやられる運命。
345デフォルトの名無しさん:2011/10/07(金) 11:31:16.59
346デフォルトの名無しさん:2011/10/07(金) 16:27:51.44
ド・ジャンゴさんは社内でノウハウを共有して自社サービス全てこれで作成するよ!みたいな環境だとたぶん最強だけど
受託開発のようにニーズが顧客によって違うようなプロジェクトでは合わないだろうなぁ
347デフォルトの名無しさん:2011/10/07(金) 19:32:42.96
DjangoってそもそもCMS開発用だからね。あまり汎用的に見えない。
348デフォルトの名無しさん:2011/10/07(金) 20:22:38.01
pipって、Windowsでもソースパッケージをコンパイルできますか。
349デフォルトの名無しさん:2011/10/07(金) 22:10:45.13
python3.2.2でてるけどまだ2系列が主流なの?
350デフォルトの名無しさん:2011/10/07(金) 23:13:10.19
標準モジュール以外をふんだんに使っている人は2系が主流じゃないかな
3系ではいまだに対応してないモジュール結構多いし
351デフォルトの名無しさん:2011/10/07(金) 23:15:44.17
>>348
できる。
以下参考に
MinGW
http://pythonlife.seesaa.net/article/122626332.html
Viausl Studio
http://slacy.com/blog/2010/09/python-unable-to-find-vcvarsall-bat/

>>349
そうだよ。
まだ主要なライブラリが3.xに対応していない。
今まさに話題になっていたDjangoもそう。
Pythonは汎用な言語なのだが、
これは高速で低レベルなC/C++拡張を手軽に利用できることが大きな要因の一つ。
けれども、2.x→3.xに対応させるには、
今まで利用してきたC/C++拡張にメスを入れなければならない。
http://coreblog.org/ats/why-python-30-is-still-deprecated
あと、ctypes+win32でも結構面倒なことに。
http://www.freia.jp/taka/blog/753
例えばPyWin32なんかは3.xに移行するの面倒だろう。
352デフォルトの名無しさん:2011/10/07(金) 23:18:24.17
すまん、よく見たらpipか・・・
基本的にはeasy_installと一緒なんだが
使えないオプションが多々ある。
353デフォルトの名無しさん:2011/10/09(日) 02:01:40.88
アホな質問で申し訳ないんですが
リストの最小値の添字を返す関数は組み込まれてますか
ないならスマートな方法を教えて下さい
354デフォルトの名無しさん:2011/10/09(日) 03:34:31.12
L = [1, -2, 3, -4, 5]
print L.index(min(L))

最小値が複数ある場合はしらん
355デフォルトの名無しさん:2011/10/09(日) 03:41:06.46
ほうほう、夜遅くにありがとうございます
356デフォルトの名無しさん:2011/10/09(日) 03:50:52.67
from operator import itemgetter

def argmin(a):
    return min(enumerate(a), key=itemgetter(1))[0]

のほうがいいぞ。
357デフォルトの名無しさん:2011/10/09(日) 08:23:53.94
358デフォルトの名無しさん:2011/10/09(日) 14:42:26.69
Python関係ないじゃん!
359デフォルトの名無しさん:2011/10/09(日) 14:56:08.89
これで更にIT土方の体力勝負化が進むな
360デフォルトの名無しさん:2011/10/10(月) 13:59:49.49
ページ内のtwitterアカウントを纏めてtwitterのlistに登録するマクロ作ろうとしています。
HTMLからのアカウント抽出はJavaScript、twitterのリストへの登録はPython使ってやりたいのですが、
PythonからJavaScript実行させることって出来ますか?

ブラウザはchrome使ってます。
361デフォルトの名無しさん:2011/10/10(月) 18:26:06.81
Javascript を含んだHTMLファイルを書き出してブラウザで開かせるとか?
362デフォルトの名無しさん:2011/10/10(月) 20:22:03.63
なんでアカウントの抽出をPythonでやらないの?
JavaScriptよりも楽だと思うが。
363デフォルトの名無しさん:2011/10/10(月) 21:51:02.86
def argmin(a):
return min(enumerate(a), key=lambda x: x[1])[0]

って今まで書いてたんだけど、
itemgetterの方が効率いいの?
364デフォルトの名無しさん:2011/10/10(月) 23:49:28.65
>>363
ビルトインなだけあってitemgetterの方が少し早い。

>>> timeit.timeit(setup='a=range(1000);from operator import itemgetter', stmt='min(enumerate(a), key=itemgetter(1))[0]', number=10000)
1.6388215130858725

>>> timeit.timeit(setup='a=range(1000);f=lambda x:x[1]', stmt='min(enumerate(a), key=f)[0]', number=10000)
2.7940041704099485
365デフォルトの名無しさん:2011/10/11(火) 01:15:36.07
おお、だいぶ変わるのな。
366デフォルトの名無しさん:2011/10/11(火) 05:33:20.73
>>361
ブラウザで開いたとして、その結果はどうやったら取れるでしょうか?
JSってファイルに書き出しとかは出来ないですよね??

>>362
既に作成済みのJSがあるからです。

そのまま動かす方法はない感じですかね。。
ちょっと思いついたのですが、Selenium2 のWebDriver使えば
出来そうな気がしてきました。
JavaでやったときにはJSの実行が出来たので同じ感じで
Pythonでもいけるかもですね。

ちょっと試してみます
367デフォルトの名無しさん:2011/10/11(火) 06:32:10.04
「ページ内のtwitterアカウント」ってのが何を指しているのかが分からん。
368デフォルトの名無しさん:2011/10/11(火) 09:05:58.38
出来るけど実際やったらすぐアク禁なるよ
369デフォルトの名無しさん:2011/10/11(火) 09:20:40.07
APIがダメならmechanizeを使えばいいじゃない。
370デフォルトの名無しさん:2011/10/11(火) 15:11:41.46
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
371デフォルトの名無しさん:2011/10/11(火) 19:50:13.16
Django1.3をCGIで動かしたいんだけどどうすればいいでしょうか?
372デフォルトの名無しさん:2011/10/11(火) 22:46:46.01
>>366
Java による JavaScript 処理系である Rhino を使って実行するのはどう?
JavaScript から Java のクラスを使えるからファイル書き出しも問題ない
373デフォルトの名無しさん:2011/10/12(水) 02:57:04.50
374デフォルトの名無しさん:2011/10/12(水) 19:52:06.16
>>373
ありがとうございます、でもこれDjango-1.1.1ですよね?
1.3でも同じなんでしょうか?
375デフォルトの名無しさん:2011/10/12(水) 20:39:53.89
pass
376デフォルトの名無しさん:2011/10/12(水) 20:51:40.36
鶏Django鍋のおいしい季節
377デフォルトの名無しさん:2011/10/12(水) 20:53:25.53
Flaskをチュートリアル通りにやって勉強しているのですが、
http://flask.pocoo.org/docs/testing/#the-first-test
この項目のテストを実行すると

E
======================================================================
ERROR: test_empty_db (__main__.FlaskrTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "flaskr_tests.py", line 13, in setUp
flaskr.init_db()
AttributeError: 'module' object has no attribute 'init_db'

----------------------------------------------------------------------
Ran 1 test in 0.022s

FAILED (errors=1)

と表示されてチュートリアル通りの結果になりません。
これは、何が原因なんでしょうか…?

あと、関係あるかわかりませんがPythonの対話シェルでも
import flaskr
flaskr.init_db()
を実行するとAttributeErrorが出ます。
378デフォルトの名無しさん:2011/10/12(水) 21:00:04.01
>>377
flaskrってこれでしょ?ちゃんとチュートリアルの内容は理解できてる?
https://github.com/mitsuhiko/flask/blob/master/examples/flaskr/flaskr.py
379377:2011/10/12(水) 21:01:38.42
すみません、自己解決しました…。どうかしてました…
380デフォルトの名無しさん:2011/10/12(水) 22:13:19.86
英語読めないと日本語資料の少ないPythonは厳しいと思うぞなもし
381デフォルトの名無しさん:2011/10/13(木) 09:51:10.05
Facebookの元CTO
「PHPは問題外。クソすぎるがPHPの資産が多すぎてFacebookをPythonとかに移行するのは不可能。」
382デフォルトの名無しさん:2011/10/13(木) 10:10:58.65
>>381
どういう意味?
383デフォルトの名無しさん:2011/10/13(木) 11:34:56.22
本当ははPHPを捨てたいけど、
既存のコードベースが大きすぎてもう切り替え不能ってことでしょ。
384デフォルトの名無しさん:2011/10/13(木) 11:56:55.01
まあPHPのシステム抱えてるところはみんな思ってることだろうな
385デフォルトの名無しさん:2011/10/13(木) 14:37:24.80
問題外なのに使いつづけるってなんか意味不明だなあ。
386デフォルトの名無しさん:2011/10/13(木) 14:43:41.62
スクリプトを実行せずに文法チェックだけする方法ってありますか?
あまり厳密なものでなくても良くて、 perl -cw とか ruby -cw みたいな感じです。
387デフォルトの名無しさん:2011/10/13(木) 15:14:39.22
>>386 pylintとか
388デフォルトの名無しさん:2011/10/13(木) 15:21:26.07
>>386
python -c'compile(...)'とかする
389デフォルトの名無しさん:2011/10/13(木) 16:56:21.33
jython 2.1 という特殊な環境で申し訳ないのですが、教えてください。

threading.RLockのacquireやreleaseを使うと、
stderrにスレッド名や何度目の確保かなどの情報が表示されるのですが
この内容を出力しないようにすることはできますか?
390デフォルトの名無しさん:2011/10/13(木) 21:27:16.40
>>381
具体的にphpの何がダメなんだろ。俺もpythonが好きなんだが、これから仕事でphpやるんだわー。
391デフォルトの名無しさん:2011/10/14(金) 04:44:30.20
やればわかる
392デフォルトの名無しさん:2011/10/14(金) 07:29:48.27
>>390
良し悪しはよくわからんけど、PHPをやった経験からすると、
Javascriptと同様にhtmlと混在できるから
テンプレート機能があるフレームワークとか、
あるいは手書きでも意識してそこを分離するように書かないと
後で改修する時に泣く。
393デフォルトの名無しさん:2011/10/14(金) 10:41:37.04
下の方法でbeep音を出そうとすると確かにスピーカーから音は出るのですが
ヘッドホンを繋いでいるときでも無視されてスピーカーから音が出てしまいます
ヘッドホンが繋がっているときにはヘッドホンから音が出るようにしたいのですが
どうすればよろしいでしょうか?
http://blog.srengine.com/2008/03/python.html
394デフォルトの名無しさん:2011/10/14(金) 10:52:28.39
>>393
標準なら
import Tkinter
r = Tkinter.Tk()
r.bell()
r.destroy()
del r

Windows限定で良ければ
import winsound
winsound.MessageBeep(winsound.MB_ICONHAND)
395デフォルトの名無しさん:2011/10/14(金) 11:18:53.19
>>394
ありがとうございました
396デフォルトの名無しさん:2011/10/14(金) 11:48:21.32
>>390
やればわかるよ
C++に毛が生えた程度の能力しかないくず言語だから
397デフォルトの名無しさん:2011/10/14(金) 11:57:41.12
PHPなんてどうみてもC++以下だろ
398デフォルトの名無しさん:2011/10/14(金) 12:29:16.16
PHPはそもそもテンプレート言語なのにその上にテンプレートやらフレームワークやら載っけるから意味のわからない事になる
399デフォルトの名無しさん:2011/10/14(金) 13:52:34.37
訃報: C 言語の開発者、デニス・リッチー氏が死去
ttp://developers.slashdot.jp/story/11/10/13/0224245/

Google+ で Rob Pike 氏が語ったところによると、C 言語の開発者、K&R の R であるところの Dennis Ritchie 博士が亡くなられた。
70 歳 (Rob Pike 氏による Google+ への投稿) 。

長らく闘病中だったとのことで、先週末に自宅で息を引き取ったそうだ。
400デフォルトの名無しさん:2011/10/14(金) 14:02:18.16
>>399
スレ違い
401デフォルトの名無しさん:2011/10/14(金) 15:17:22.49
リッチーブラックモアなら知ってる
402kuma:2011/10/14(金) 16:26:03.13
pythonを勉強始めようと思っています

質問があります
pythonmには、perlのcpanのようなものは、ありますか?
403デフォルトの名無しさん:2011/10/14(金) 16:36:19.51
404デフォルトの名無しさん:2011/10/14(金) 17:11:03.63
ぱいぱい
405kuma:2011/10/14(金) 17:13:59.77
>>403
親切な対応をありがとうございます。
勉強して、使えるようになりたいです。
ありがとうございました。

406デフォルトの名無しさん:2011/10/14(金) 18:19:26.36
winXP、ptyhon2.7.1です。
「リストLの要素の、全ての組み合わせを列挙し、
要素の第2項目の合計値を求める」
という趣旨で書いたのが下記です。
forの中身を、reduceやsumやリスト内包表記を
使ってスマートなコードしたいのですが、
書き方が全く解かりません(思いつきません)。
どなたか、書き換え例をお願いします。
(表示のためインデントは全角空白です)

# -*- coding:cp932 -*-
import sys, itertools
L = [['A',12050],['B',28600],['C',14530],['D',12810],['E',11020],
['F',10050],['G',18600],['H',24530],['I',21510],['J',10080]]
num = 0
for i in xrange(1,len(L)+1):
 for j in itertools.combinations(L, i):
  j_total = 0
  combi = []
  for k in j:
   combi.append(k[0])
   j_total += k[1]
  num += 1
  print num, '-'.join(combi), ':', j_total
sys.exit(0)
407デフォルトの名無しさん:2011/10/14(金) 18:34:32.27
for num, lis in enumerate(j for i in xrange(1, len(L)+1) for j in itertools.combinations(L, i)):
print num, '-'.join(item[0] for item in lis), ':', sum(item[1] for item in lis)
408デフォルトの名無しさん:2011/10/14(金) 19:04:01.27
もう分かったと思いますがなんでも使えばいいってもんじゃありません
409デフォルトの名無しさん:2011/10/14(金) 19:51:47.89
L = [['A',12050],['B',28600],['C',14530],['D',12810],['E',11020],
  ['F',10050],['G',18600],['H',24530],['I',21510],['J',10080]]
for num in xrange(1,1<<len(L)):
 x = lambda k: (b[k] for a,b in enumerate(L) if num & 1<<a)
 print num, '-'.join(x(0)), ':', sum(x(1))

ビット演算で組み合わせを生成してみたり。
410デフォルトの名無しさん:2011/10/14(金) 20:03:36.36
L = [['A',12050],['B',28600],['C',14530],['D',12810],['E',11020],
  ['F',10050],['G',18600],['H',24530],['I',21510],['J',10080]]
for num in xrange(1,1<<len(L)):
 x,y = zip(*(b for a,b in enumerate(L) if i & 1<<a))
 print i, '-'.join(x), ':', sum(y)

zip使ったほうが綺麗か?
411デフォルトの名無しさん:2011/10/14(金) 20:05:33.84
ビット演算使ったら中二病コードになっちまう。
412デフォルトの名無しさん:2011/10/14(金) 20:13:10.43
from __future__ import print_function
L = [['A',12050],['B',28600],['C',14530],['D',12810],['E',11020],
  ['F',10050],['G',18600],['H',24530],['I',21510],['J',10080]]
for num in xrange(1,1<<len(L)):
 x,y = zip(*(b for a,b in enumerate(L) if i & 1<<a))
 print(i, *reduce(lambda x,y: (x[0]+'-'+y[0], x[1]+y[1]), (b for a,b in enumerate(L) if i & 1<<a)))

無理やりreduce使ってみた。
Python3形式のprintじゃないと最後の書き方ができないんで、__future__使ってしまったが。
413デフォルトの名無しさん:2011/10/14(金) 20:15:17.75
訂正です。

from __future__ import print_function
L = [['A',12050],['B',28600],['C',14530],['D',12810],['E',11020],
  ['F',10050],['G',18600],['H',24530],['I',21510],['J',10080]]
for num in xrange(1,1<<len(L)):
 print(i, *reduce(lambda x,y: (x[0]+'-'+y[0], x[1]+y[1]), (b for a,b in enumerate(L) if i & 1<<a)))


>>411
確かに、中二病臭はするw
何をしているかコメントを残しておけば、個人的には許せる範囲だけど。
414デフォルトの名無しさん:2011/10/14(金) 20:16:01.30
__future__が嫌ならsys.stdout.write(str())すればいいじゃない
415406:2011/10/14(金) 20:38:13.75
>>407
連番がゼロ始まり以外は同じ結果でした。
>>409
並びは違いますが、同等の結果でした。
>>410 >>412 >>413
errorでしたが、numをiにしたら動いて409と同じ結果でした。
>>408
その通りの様です。残念ながら、どれも動作の流れが掴めません。
コピペで使っても、今の私ではメンテや応用は不可能です。
自分で理解できる書き方で行きます。
例を挙げてくれた方、ありがとうございました。精進します。
416デフォルトの名無しさん:2011/10/14(金) 21:00:44.11
>>406

import itertools

L = ...

def tomato(lst):
 for i in xrange(1, len(lst)+1):
  combos = itertools.combinations(lst, i)
  for combo in combos:
   label = '-'.join(item[0] for item in combo)
   total = sum(item[1] for item in combo)
   yield label, total

for i, reply in enumerate(tomato(L)):
 print '{index} {label} : {value}'.format(index=i+1, label=reply[0], value=reply[1])
417デフォルトの名無しさん:2011/10/14(金) 21:07:52.03
人気だなぁ。
>>389 はレスなくて悲しい。
418デフォルトの名無しさん:2011/10/14(金) 21:41:20.84
JythonってだけでもマイナーなのにJython2.1って10年前だよな
レスつかなくても仕方ないんじゃないか
419デフォルトの名無しさん:2011/10/14(金) 22:08:01.05
うん。仕事で突然使わされてドキュメントもなくて悲しい。
420デフォルトの名無しさん:2011/10/14(金) 22:38:27.33
くだすれPython(超初心者用) その11
http://hibari.2ch.net/test/read.cgi/tech/1301383226/
は、こちらに統合ですか?
421デフォルトの名無しさん:2011/10/14(金) 22:41:25.15
宿便は宿題スレで
422デフォルトの名無しさん:2011/10/15(土) 02:05:20.33
フジテレビデモ
花王デモ
要チェック
423デフォルトの名無しさん:2011/10/15(土) 03:30:16.47
ネトウヨは暇だなぁ
424デフォルトの名無しさん:2011/10/15(土) 05:14:31.11
PHPって、
(new Object()).method()
的なことができないらしい。どういう構文解析してんだ。
425デフォルトの名無しさん:2011/10/15(土) 06:04:13.55
もともとオブジェクト指向じゃないもんで。
426デフォルトの名無しさん:2011/10/15(土) 07:44:29.65
別に C でも {1,2,3}[2] みたいなことはできないじゃん。

言語がちがうんだから構文のありかたがちがうのは当たり前。
427デフォルトの名無しさん:2011/10/15(土) 12:58:25.20
構文のありかたじゃなくてsemantic analysisの問題だから、
Cで {1,2,3}[1]ができないのとはちょっとちがう話だと思う。
まあどうでもいいけど。
428406:2011/10/15(土) 13:57:40.02
>>416
これはなんとか読み取れて、応用ができそうです。ジェネレータがポイントでしょうか。
ありがとうございます。( 407 と同じ方の気がします)
429デフォルトの名無しさん:2011/10/15(土) 16:40:41.50
>>427
出来ないことに変わりないんだから
意味のないレスでスレを汚さないで頂きたい
430デフォルトの名無しさん:2011/10/15(土) 16:48:38.50
pass
431デフォルトの名無しさん:2011/10/15(土) 17:08:08.94
web2pyで作ったwebアプリをアップロードして動かすには
アップロード先にweb2pyをインストールしてその管理ページから
パッケージインストールするしかないの?
432デフォルトの名無しさん:2011/10/16(日) 00:52:16.81
最近PythonだったアプリがどんどんValaに移行しているような気がする。
433デフォルトの名無しさん:2011/10/16(日) 01:04:03.60
Valaも気になるしGenieも気になる http://live.gnome.org/Genie
434デフォルトの名無しさん:2011/10/16(日) 05:45:38.63
GObjectなんてGNOMEのやつらしか使わないけどね。
435デフォルトの名無しさん:2011/10/16(日) 06:45:01.26
しかし実際書き換えられてるとなると気になるよな
どの辺がいいんだろう
436デフォルトの名無しさん:2011/10/16(日) 13:24:25.46
awkからの乗り換え試行錯誤中の者です。
関数定義(function)は、メインに相当するコードブロックまたは
ENDブロックの下に並べて纏めていましたが、pythonではNGの様です。
pythonでは、関数定義(def)はどこに書くのが良いのでしょうか?

そのファイルの、先頭(import〜メインとなるコードの間)?
そのファイルの、初めて必要になったところ?
他のファイルに、纏めておく(importして使う)?
その他?

使用頻度や再利用の可能性などケースバイケースかもしれませんが、
セオリーがあったら教えてください。
437デフォルトの名無しさん:2011/10/16(日) 13:34:47.76
>>436
好きなところに書けばいいんじゃね?

一応確認しておくけど、ENDって論理的なファイルのおわりのことだよね?
あと、メイン処理は
if __name__=='__main__:
の中に書いてるよね?
438デフォルトの名無しさん:2011/10/16(日) 13:36:34.30
いや、たぶんawkのENDブロックのことかと
439デフォルトの名無しさん:2011/10/16(日) 13:42:34.05
>>437
if __name__=='__main__: の中に…書いてません…。
書くとどういう違いが出るのでしょうか?

>>438
 そうです。BEGIN{} {} END{} の下にという意味です。

440デフォルトの名無しさん:2011/10/16(日) 13:45:14.71
> if __name__=='__main__:

他のファイルからimportされてるときは実行されない
441デフォルトの名無しさん:2011/10/16(日) 14:00:55.32
>>436
関数の呼び出しをする前に、関数定義(def〜)が処理されていないと駄目。
後方参照で関数を呼ぶことはできない。

だからPythonのスクリプトは、スクリプトの一番後ろからmain()を呼ぶように書く。

import hoge
def main():
 f()
def f():
 hogehoge
if __name__=='__main__':
 main()

def〜の行も実行されるって考えるといい。
442デフォルトの名無しさん:2011/10/16(日) 14:13:02.09
>>441
fが未定義
443デフォルトの名無しさん:2011/10/16(日) 14:13:52.20
ぱいちんくんとちんぱいくん
444デフォルトの名無しさん:2011/10/16(日) 14:33:11.03
>>442
関数定義def main(): f()を実行しただけでは関数fは呼びだされないよ
なので未定義エラーにはならない
445デフォルトの名無しさん:2011/10/16(日) 14:38:17.84
pychinko
446デフォルトの名無しさん:2011/10/16(日) 14:39:18.40
レスくれた方々、ありがとうございます。
importとif __name__=='__main__':の間で関数定義しておけば、
その関数はif __name__=='__main__':以降のコードで使用できる、
という理解でいいでしょうか?

>>442
この指摘が気になります。後方参照は出来ないのだから、
def main()の前に定義されていないf()は、def main()では使えない。
という事か思ったんですが、
if __name__=='__main__'以降で、main()を呼んだ時は、f()は定義済み
という事になって、使用可能にも思えます(前方にあるので)。
どちらが正しいのでしょうか。
447446:2011/10/16(日) 14:42:50.38
すいません。444さんが、疑問に答えてくれていました。
(更新してませんでした)
448デフォルトの名無しさん:2011/10/16(日) 14:47:48.83
>>446
どうせなら機械的にコンバートするコンバータ書いたら?
449446:2011/10/16(日) 14:54:37.58
>>444
関数定義の記述順で、定義済み・未定義は決まらない。
実際に実行した時に、定義済み・未定義が決まる。
という風に理解しました。
>>448
AWK→PYTHONコンバータという事ですか?
無理です…こんな質問しているレベルなのに。というか永遠に無理…。
450デフォルトの名無しさん:2011/10/16(日) 15:22:54.03
>>449
awkで書けばいいだろ。
451デフォルトの名無しさん:2011/10/16(日) 15:33:36.83
とりあえず、if __name__ ... は忘れて、main()を全部の関数宣言後に実行しとけって考える。
import云々はとりあえず、今の疑問点と関係ない。
452デフォルトの名無しさん:2011/10/16(日) 16:40:13.46
>>449
> 関数定義の記述順で、定義済み・未定義は決まらない。
すこし勘違いしてるかも
(関数本体に含まれる変数なり名前の定義未定義という意味ならOK)

まずPythonプログラムは実行文の並びであり上から実行していく
importやdefなんかも実行文のひとつ
ただしdef文を実行して関数を定義した時点では関数本体は実行されない
あくまで関数を呼び出した時点で本体が実行される
453デフォルトの名無しさん:2011/10/16(日) 22:34:43.69
datetime.date(2008,02,8)だと動作しますが
datetime.date(2008,02,08)ではシンタクスエラーが出るんですがどういうことですか
454デフォルトの名無しさん:2011/10/16(日) 22:41:59.45
>>453
それ8進数
>>> 017
15
455デフォルトの名無しさん:2011/10/16(日) 22:44:18.61
>>453
08 の部分が8進数扱いされているのでは?
8新数に 8や9はありません。

......とは言え、使えてしまった言語があったような。昔のPerlだっけか?
456デフォルトの名無しさん:2011/10/16(日) 22:50:22.68
なるほど
ありがとうございます
457デフォルトの名無しさん:2011/10/17(月) 10:08:26.38
ちなみに、Python3からは「0123」とかも10進数扱いなので注意ね。
Python2.7とかなら、3.0以降と同じ新しい8進表記「0o123」が使えるので、こっちで慣れておいたほうがいいかも。
458デフォルトの名無しさん:2011/10/17(月) 11:05:31.54
0123はSyntaxErrorじゃない?
459デフォルトの名無しさん:2011/10/17(月) 11:59:29.70
>>449
実際やってみるとよろし。
# a.py
def f():
 a = undefined_variable

# b.py
def f():
 undefined_function()

# c.py
def f():
 syntax>>>>>>>>>>>>>>error
のうちで、定義だけでエラー出るのは構文エラーのものだけ。
a.py, b.pyの下行に f() を付け足して実行すると、関数が呼び出されて、エラーが出る。

def f1():
 g1()
def f2():
 g2()
def g1():
 pass
f1()
f2()
def g2():
 pass
だと、f1ではエラー出ないけどf2だと、g2がないのでNameErrorが出る。
それは、f1の(定義ではなく)呼び出しまでに、g1は定義されているけど
f2の呼び出しまでにg2が定義されていないからそうなる。
460デフォルトの名無しさん:2011/10/17(月) 12:04:49.16
>>441 >>446
× 後方参照

○ 前方参照
461デフォルトの名無しさん:2011/10/17(月) 13:37:44.59
ヒント:動的参照
462デフォルトの名無しさん:2011/10/17(月) 20:12:29.75
例えば、100万行くらいのタブ区切りテキストデータがあって、
特定のカラムには必ずパターン化された文字列(例えばいずれかの都道府県名とか)がくることが
分かっているようなデータがあります。
で、逐次処理できないような計算がしたいので、全体をメモリに読み込むのですが、
メモリ節約と高速化のため、同じ中身の文字列オブジェクトを同一IDとなるように、
prefectures = {}
for line in open(filename):
 ...
 prefecture = prefectures.setdefault(prefecture, prefecture)
 ...
みたいにしているんですけど、もう少しスマートに書く方法はないでしょうか?
※ Rで言うところのfactorみたいなことがしたい
463デフォルトの名無しさん:2011/10/17(月) 20:34:32.78
intern?
464デフォルトの名無しさん:2011/10/17(月) 21:11:09.85
おおそれだ。どうもどうも。

#でも、辞書はグローバルで共通とか、文字列しか使えない、タプルとか無理とか、制約が多いなぁと感じ無くもなかったり。

_intern_dict = {}
def intern(x, idict=_intern_dict): return idict.setdefault(x,x)

とすればいいのか?
465デフォルトの名無しさん:2011/10/18(火) 00:07:11.01
intern()ってもとはLispのシンボルだろうしJavaとかにもあるし
XやWindowsのATOMも同類だけど、大抵の実装はPythonと似たような感じだと思うよ
勿論組み込みのものが不満なら、そういう実装を自分で作って使ってもいいんじゃね

466デフォルトの名無しさん:2011/10/18(火) 07:01:59.53
>>462
DB使わないのはなんで?
467デフォルトの名無しさん:2011/10/18(火) 07:37:29.43

スクリプト言語はコンパイルしなくていいみたいなんですが
例えば2chのスレを読み込む場合、URL間違えてエラーが出た場合
間違えたところを修正してそこから始めるみたいなことできますか?
それともコンパイル言語と同じようにまた1からスタートしなくちゃいけない?
468デフォルトの名無しさん:2011/10/18(火) 08:11:10.20
>>467
デバッガの上で動かしてれば出来るよ。

マジメに組むならすべてのエラーに対してあらかじめ
対応するエラー処理ルーチンを組み込むべきだと思うけど。
469デフォルトの名無しさん:2011/10/18(火) 09:06:40.35
>>468
すごいなースクリプト言語初めてなので感動
WEBにアクセスするのにC言語のようにゼロから同じ作業繰り返しとか大変だから
これだとぐいぐい作っていけそうですね
470デフォルトの名無しさん:2011/10/18(火) 10:20:04.67
>>466
気合入れた統計計算をしたいのでDB上でなんて無理。
Cで書こうか迷ってる。
471デフォルトの名無しさん:2011/10/18(火) 10:42:23.35
気合はなくてもいいから頭を使おう
472デフォルトの名無しさん:2011/10/18(火) 11:31:34.31
DBつってもいろいろあるで
もしSQL使うようなRDBを想定してるんなら、だけどな

473デフォルトの名無しさん:2011/10/18(火) 12:08:05.95
sqliteを :memory: じゃアカンか?
474デフォルトの名無しさん:2011/10/18(火) 12:59:45.91
ふつうに、
質的データを整数にマッピングするクラスを作ればいいんじゃないの。
475デフォルトの名無しさん:2011/10/18(火) 13:12:54.35
今のCPython実装では、整数でも-5〜256以外?だったら個別に割り当てられる
オブジェクトになるんだから、
整数の等価比較よりも、(文字列でも何でも)同一オブジェクトのis比較のほうが
速い可能性はある。
476デフォルトの名無しさん:2011/10/18(火) 14:38:55.36
>>474
気になったのでテストしてみました。

100種類の文字列をランダムに10,000,000回出力させたテキストファイルから、
先頭に出てくる文字列が、全体では何回出てくるかを数える。
但し、文字列(または文字列をマッピングした整数)は、一旦リストに読み込み、
timeitで5回平均値で計測。データセットは全10個。つまり50回の平均値。
(A) 文字列そのままリストに入れて、==比較
(B) internした文字列をリストに入れて、is比較
(C) 文字列を整数にマッピングし、==比較
(D) 文字列を1000から始まる連番の整数にマッピングし、==比較
結果は、
(A) 7.124秒
(B) 5.713秒
(C) 6.326秒
(D) 6.583秒
整数にマッピングするより、文字列intern+is比較の方が速い。
isで比較することを我慢すれば、不要な処理を挟まなくて良い分可読性も良い?
477デフォルトの名無しさん:2011/10/18(火) 14:46:17.11
ちなみに、(D)では、整数がわざと異なるオブジェクトになるよう、
d = {}
a = [d.setdefault(x, len(d))+1000 for x in open('dat.txt')]
のように読み込んでいます。
当然ですが、読み込み部分は測定時間に入ってません。
ちなみに、Python3.2
478デフォルトの名無しさん:2011/10/18(火) 21:48:53.41
>>467
C言語でもVisualC++なんかはエディットコンテニューって機能があってだな(以下略

っていうか、ゼロから同じ作業繰り返しってのがいまいちよく分からないんだけど、
デバッグするのにいちいち手動で入力する手順があるの?
そういうのはデバッグ用に適当な値を用意しとくもんだよ。
479デフォルトの名無しさん:2011/10/18(火) 22:11:27.43
あれはただの喩えだから
いろいろ実験したいときとかさ

でも、インタラクティブモードやってみたけど
うまくいったコードをまた書き写さないといけないんだな
ちょっと思ってたのと違うみたい
480デフォルトの名無しさん:2011/10/19(水) 09:12:02.47
馬鹿には無理
481デフォルトの名無しさん:2011/10/19(水) 11:34:10.21
なんかダメな奴は何やってもダメなんだなっていう好例だな
482デフォルトの名無しさん:2011/10/19(水) 11:45:24.52
始めたばっかでダメとかバカとか言われてもなw
お前らそんなに自分に自信がないのかよw
483デフォルトの名無しさん:2011/10/19(水) 11:53:52.65
だぶりゅーw
484デフォルトの名無しさん:2011/10/19(水) 12:01:09.76
コンパイル言語と同じようにまた1からって意味がよくわからないんだよな。
コンパイル言語でも途中からやればいいと思うんだけどな。
CでもCutterとかあるし。
485デフォルトの名無しさん:2011/10/19(水) 12:41:49.64
188 名前:可愛い奥様 [sage] :2011/10/19(水) 10:35:25.32 ID:N8BWsFxs0
あさイチの件だが、番組後半で「ゲルマニウム半導体検出器で計測した値から環境放射線量の分を引くから0やマイナスになる事がある」って説明してたね

ゲルマニウム半導体検出器って外部からの放射線が混入しないように内部を10cm以上の鉛で遮蔽してるのに、環境放射線量を引くってどういうこっちゃ?

そういうおかしな事してたら、そりゃ福島の食材の計測値が0ばっかりになるはずだわ
一日だけ数ベクレル出た他のところも、産地偽装食材をつかまされてて、実際はこの「おかしな引き算」をしない場合の値は数ベクレルどころか数十〜数百ベクレル出てたんじゃないの?

計測担当した首都大学の福士はもろ御用学者なので、別の中立な検査機関で同じような実験を定期的にやるべきだと思う
環境放射線の分とか言って余計な引き算をしないところなw
486デフォルトの名無しさん:2011/10/19(水) 13:03:49.13
クソすれ
487デフォルトの名無しさん:2011/10/19(水) 14:21:33.00
ageるとアホがコピペ爆撃するからやめろよー
488デフォルトの名無しさん:2011/10/19(水) 16:47:17.31
なるほど
489デフォルトの名無しさん:2011/10/19(水) 18:57:30.45
馬鹿には無理
490デフォルトの名無しさん:2011/10/20(木) 08:15:01.51
角電池
491デフォルトの名無しさん:2011/10/20(木) 08:21:00.54
>>479
書きなおすのはいいけど、それがリビジョン管理システムと連動
してないと使い物にならんだろ。書き換えの履歴ぐらい追えるようにしないと。
常に後に試した方がマシとは限らないのだから。
492デフォルトの名無しさん:2011/10/20(木) 14:04:40.39
windows7 64bitOSでCython使ってる人いますか?
何使ってコンパイルしてますか?
MinGWでうまくいかず、Microsoft SDK のやつでもうまく行かなくて……
493デフォルトの名無しさん:2011/10/20(木) 14:58:35.34
しっつもーん!
easy_installで、インストール先を $HOME/python/2.7 にしたいのですが、できますか?
ライブラリだけでなく、実行ファイル(スクリプト)もそこにインストールしたいです。
こんなかんじ:
$HOME/python/2.7/lib # ライブラリ
$HOME/python/2.7/bin # 実行ファイル
494デフォルトの名無しさん:2011/10/20(木) 15:17:43.39
>>493
Pythonをインストールするときに、
./configure --prefix=$HOME/local/
とかすればいいだけじゃ。
495デフォルトの名無しさん:2011/10/20(木) 15:30:45.29
>>494
えーなんでそんなことをいうの?
Python自体は/usr/localや/opt/localに入っているのを使いたいんです。
apt-get install pythonしたのとかMac標準ではいっているやつね。
496デフォルトの名無しさん:2011/10/20(木) 15:46:42.84
497デフォルトの名無しさん:2011/10/20(木) 16:41:35.71
>>496
ありがとー、でも英語なのね。
頑張って読んで見ます。分からなかったら助けて下さいね。
498デフォルトの名無しさん:2011/10/20(木) 16:50:20.39
態度でかいなw
499デフォルトの名無しさん:2011/10/20(木) 16:54:57.84
次のスレタイはこれにしとこうか

[永久] Pythonのお勉強 -44℃ [凍土]
500デフォルトの名無しさん:2011/10/20(木) 18:28:13.49
嫌われマカーの鏡
501デフォルトの名無しさん:2011/10/20(木) 18:39:57.85
>>496
>>497
--prefix=DIR (New in 0.6a10)

かな?
502デフォルトの名無しさん:2011/10/20(木) 19:39:44.03
Pythonの掃除機
503デフォルトの名無しさん:2011/10/21(金) 00:06:42.21
pythonいいんだけど、あの変な3項演算子もどきはどうしてああなっちゃったんですかね
if文をif式にしてくれれば折れ的にはすっきりなのだが
python暦の長い人にとってはあっちの方がすっきりなのですか?
504デフォルトの名無しさん:2011/10/21(金) 00:28:26.53
Cみたいな暗号のようなコードを作らないためだろう
505デフォルトの名無しさん:2011/10/21(金) 00:45:27.00
python ternary faqとかでぐぐればでてくるよ
506デフォルトの名無しさん:2011/10/21(金) 01:42:20.69
>>504-505
ありがd。調べてみました。

http://docs.python.org/py3k/faq/programming.html#is-there-an-equivalent-of-c-s-ternary-operator

python的にはif文の中で処理すればいいでしょってことのようですね。
あるいは "a and b or c" で "a ? b : c" と似たようなことは出来るよ(同じじゃないけど)とか。
でも、だったらif式導入でもいいじゃないかとも思ったのですが、
よく考えるとperlみたいなコードになっちゃいそうで良くないですね。

結局のところ、詰め込むのを抑制したいんですね。
lambdaの中に文を入れられない仕様もそういうことみたいですし。
なんとなく納得しました。
507デフォルトの名無しさん:2011/10/21(金) 02:15:07.03
a ? b : c ? d : e とかはpythonの方が圧倒的に分かりやすいのに何で分からないのかなあ
508デフォルトの名無しさん:2011/10/21(金) 07:20:33.59
三項演算子は、うるさい人達を黙らせるために導入してやったという感じ。
509デフォルトの名無しさん:2011/10/21(金) 08:50:06.58
わざと気持ちの悪い文法にして使わせないようにする戦略ですね
510デフォルトの名無しさん:2011/10/21(金) 12:01:03.13
何言ってんだこいつ
511デフォルトの名無しさん:2011/10/21(金) 12:18:56.86
あばあばっっばばばばばばばっっばばばばっっばばばっばばばば
512デフォルトの名無しさん:2011/10/21(金) 23:23:37.41
リストの中身をintに直したいのですが効率のいい方法ありますか?
[1,2,3,4,5]というリストをを12345というint型にしたいのですが
513デフォルトの名無しさん:2011/10/21(金) 23:39:40.59
>>507
>a ? b : c ? d : e とかはpythonの方が圧倒的に分かりやすいのに何で分からないのかなあ

そうか?
b if a else d if c else e
さっぱりわからないよ。。。


514デフォルトの名無しさん:2011/10/21(金) 23:45:05.23
>>513
それはお前が馬鹿だから
? : は : の両側が条件式なのか結果なのか分からん、どちらにでも成り得る
515デフォルトの名無しさん:2011/10/21(金) 23:49:20.66
>>512

reduce(lambda a,b: 10*a+b, [1,2,3,4,5])

効率はどうだろう。
516デフォルトの名無しさん:2011/10/21(金) 23:59:40.38
int('%d'*5 % (1,2,3,4,5))
とかでもいい

ちょっとこれはズルをしていて、リストなら
int('%d'*5 % tuple([1,2,3,4,5]))
のように書かないといけない
517デフォルトの名無しさん:2011/10/22(土) 00:09:31.69
そもそも三項演算子をネストさせるキチガイが平然とあらわれる時点で…
518デフォルトの名無しさん:2011/10/22(土) 00:10:04.24
return looooong_condition
   ? foooooo_valueeeeeee
   : otheeeer_valueeeeee;
この書き方、結構気に入ってる。理由は、値が並んでて比較しやすいから。

return foooooo_valueeeeeee ¥
   if looooong_condition ¥
   else otheeeer_valueeeeee
これは、値と値の中に条件式が入るから、嫌。
519デフォルトの名無しさん:2011/10/22(土) 00:11:17.50
>>514
>? : は : の両側が条件式なのか結果なのか分からん
それはお前が大馬鹿たから
520デフォルトの名無しさん:2011/10/22(土) 00:15:00.21
>>518
return foooooo_valueeeeeee if looooong_condition ¥
 else otheeeer_valueeeeee

こうだろ
521デフォルトの名無しさん:2011/10/22(土) 00:33:26.38
>>515
それだと、[1, 20, 3, 4, 5]の場合に意図したとおりにならないのでは?

普通に書くとこうですよね。
int(''.join(str(s) for s in [1,2,3,4,5]))

>>516とほぼ同じですね。
処理は>>515の3倍ぐらいかかります。>>516とどっこいぐらい。
522デフォルトの名無しさん:2011/10/22(土) 00:34:59.68
文字列にキャストするとかアホか…
523デフォルトの名無しさん:2011/10/22(土) 02:06:09.11
そもそも前提がよくわからない。
[1,2,-3,40,5]
とかだとどうすんのよ。
524512:2011/10/22(土) 02:14:29.63
返信ありがとうございます。
曖昧な書き方ですみませんでした。

リストの中身はすべて0〜9の一桁の数値です。
また一番初めの配列に0はこないようになっています。(下でいうa[0]に0は入っていません)
いまは
a = [1,2,3]
num = int(a[0] + a[1] + a[2])
としているのですが、実際は10桁くらいあるので汚くなっていしまいます。
525デフォルトの名無しさん:2011/10/22(土) 02:21:14.00
外に関数作れば見なくて済むぞ。はい解決
526デフォルトの名無しさん:2011/10/22(土) 07:06:29.63
>>518
そこまで言うなら普通にif文で書けよ......
527デフォルトの名無しさん:2011/10/22(土) 08:35:32.67
下のような3つの数字が並んでいるファイルから数値を一括でリストに代入する方法を教えて下さい。
hoge.txt
1.0 2.0 3.0
4.0 5.0 6.0
...

今は
x = []
y = []
z = []
for i in open("hoge.txt", "r"):
(a, b, c) = i.split()
x.append(float(a))
y.append(float(b))
z.append(float(c))
のように書いているのですが、もっとシンプルに記述したいです。
528デフォルトの名無しさん:2011/10/22(土) 10:27:39.65
>>524
>>512の1行目と2行目で言ってることが違うし怪しいなと思っていたが……
そのコードで動いているということは、
a = [1,2,3]
じゃなくて実際には
a = ['1','2','3']
なんだろ
これらは全然違うものだから、間違えないように
529デフォルトの名無しさん:2011/10/22(土) 11:11:10.16
>>527
十分シンプルだと思うが。
530デフォルトの名無しさん:2011/10/22(土) 11:18:28.20
>>527
短くすることは出来るが、却って分かりにくい気がするぞ…

x,y,z = zip(*[map(float,ln.split()) for ln in open("hoge.txt","r")])
531デフォルトの名無しさん:2011/10/22(土) 11:21:56.14
>>527
ある程度の大きさの数値データをいじるならNumPyの使用も検討してみて。
532デフォルトの名無しさん:2011/10/22(土) 14:25:24.20
wxpythonで、
ボタンとかにwxEXPAND|wxGROWセットして
ウィンドウサイズに追従してサイズ変更したときに、
中のフォントサイズも自動で追従して大きくしたいのですが、
そういう設定ないんですか?
533デフォルトの名無しさん:2011/10/22(土) 14:48:42.10
Pythonで2進数演算するときのスマートな方法ってないですかね?
zip使うようなやり方しか思いつかないんですが
534デフォルトの名無しさん:2011/10/22(土) 15:06:29.29
>>533
それだけじゃ何がしたいのか分からないよ
535デフォルトの名無しさん:2011/10/22(土) 17:02:59.37
MacOSX Lion10.7.2でPython2.5系をインストールしようとすると下記のエラーがでないでしょうか?
誰かひまな人いたら試して欲しいです。お願いします。

~/:sudo port install python25
Password:
---> Computing dependencies for python25
---> Building python25
Error: Target org.macports.build returned: shell command failed (see log for details)
Log for python25 is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_lang_python25/python25/main.log
Error: Status 1 encountered during processing.
To report a bug, see <http://guide.macports.org/#project.tickets>
536デフォルトの名無しさん:2011/10/22(土) 17:14:06.10
マルチポストは印象悪いぞ
537デフォルトの名無しさん:2011/10/22(土) 17:49:29.54
なんで分かったw
538デフォルトの名無しさん:2011/10/22(土) 17:49:51.89
539デフォルトの名無しさん:2011/10/22(土) 18:33:54.31
またマカーか。
540デフォルトの名無しさん:2011/10/22(土) 18:38:34.73
なんでマカーはこんなにレベルが低いの
541デフォルトの名無しさん:2011/10/22(土) 18:42:42.23
>>534
一度10進数にしてから演算することにしました。ありがとう。
542デフォルトの名無しさん:2011/10/22(土) 18:46:15.87
昔は今で言うスイーツがこういうの買ってたよね
http://pc.watch.impress.co.jp/docs/article/980819/imac.jpg
543デフォルトの名無しさん:2011/10/22(土) 19:17:55.52
ボンダイブルーカコイイ!!
544デフォルトの名無しさん:2011/10/22(土) 19:31:11.75
pythonのインタラクティブシェルのインデントでTABキーを使ってるんですが
1回目は4文字なんですけど2回続けると2回目が8文字挿入されてしまいます。
これは仕様ですか?バージョンは2.7です
545デフォルトの名無しさん:2011/10/22(土) 19:48:36.10
それは端末のタブ幅がスペース8つだからじゃないか
プロンプト>>>とスペース1つある状態でタブ打てば
8桁目にカーソルが移動する

とりあえずは端末からtabs 4とかする
ただCのソースとか見たときにインデント崩れるかも
546デフォルトの名無しさん:2011/10/22(土) 20:10:18.33
>>540
>>535 はマカーでも擁護しないです
547デフォルトの名無しさん:2011/10/22(土) 20:46:41.59
>>545
端末からtabs 4にする方法がわかりません
548デフォルトの名無しさん:2011/10/22(土) 21:22:06.35
windowsじゃ無理かも
549544:2011/10/22(土) 21:33:35.33
>>548
そうですか
みんpyを見ながらやってるんですが どうしても本と同じように表示されないので質問しました
気にせずに進めてみようと思います
レス有難う御座いました
550デフォルトの名無しさん:2011/10/22(土) 21:37:12.48
>>549
タブキーを使わずにスペースで打とうよ
551544:2011/10/22(土) 22:17:40.98
>>550
スペースで打ってもいいんですね
それだと本の通りになりました
有難う御座います
552デフォルトの名無しさん:2011/10/22(土) 23:23:57.62
>>529, 530, 531
ありがとうございます。
これ以上小さくするのは難しそうですね。
あちこちでファイルを読み込んでいるためできるだけ小さくできたらと思ったのですが。
NumPyも検討してみます。
553デフォルトの名無しさん:2011/10/22(土) 23:40:11.29
>>552
そのあちこちの読み込みルーチンは関数化できないのか?
554デフォルトの名無しさん:2011/10/23(日) 00:33:46.97
初歩的な質問ですみません。
hoge = [] と宣言した変数に
hoge.append(list型)としてリストの値を追加したいのですがオブジェクトごと渡しているようで
list型のオブジェクトの値が変更されるとhogeの中のリストの値を一緒に変わってしまいます。
list型の値だけを追加するにはどういった方法があるのでしょうか?
分かりにくい説明だと思いますがよろしくお願いします。
555デフォルトの名無しさん:2011/10/23(日) 00:36:49.37
>>554
def test(num=10):
hoge = []
n = [i for i in range(12)]

for i in range(num):
random.shuffle(n)
hoge.append(n)

return hoge

こうするとhogeの中身は全て同一の値になってしまいました。
556デフォルトの名無しさん:2011/10/23(日) 00:43:17.11
>>555
hoge.append(n[:])
557デフォルトの名無しさん:2011/10/23(日) 00:54:01.04
>>556
じぶんでもそう書くんだけど
こういうのってcopy.copy()のが明示的でpythonicなんかな?
558デフォルトの名無しさん:2011/10/23(日) 00:56:09.24
>>556
お〜簡潔な解決策ありがとうございました!
pythonicなのかは分かりませんが助かりました。
559デフォルトの名無しさん:2011/10/23(日) 11:54:37.26
これから一生djangoかjinja2のどちらかしか使っちゃダメとなったらどっちを使いますか?
560デフォルトの名無しさん:2011/10/23(日) 12:30:28.08
>>559
そんな人生リセット
561デフォルトの名無しさん:2011/10/23(日) 18:03:55.62
>>520 が分かりやすいな
Perlベストプラクティスに載っていたネストした三項演算子をテーブルのように見せる書き方に似てる
return a ? b
    : c ? d
    :   e
    ;
Pythonも前後逆で似たような書き方ができるな
return b if a \
  else d if c \
  else e
562デフォルトの名無しさん:2011/10/23(日) 18:30:58.76
いろんな音声ファイルを変換するのに便利なモジュールってなに
563デフォルトの名無しさん:2011/10/24(月) 09:42:07.10
質問です。
ハッシュの特定のキーに配列で値を追加したい場合、
ハッシュの特定のキーに配列があれば値を追加、空ならば配列を生成して追加
ということがしたいのですが、どのように書けば実現できるのかわかりません。

result = {}
index = 0
text = "hoge"
for i in range(1, 10):
  if len(result) == 0:
    result[index] = [text]
  else:
    result[index].append(text)
  index += 1

print(result)

Rubyだと、ハッシュの初期化を以下のように行えば解決できるのですが、
Pythonで同じような解決方法はありませんか?
result = Hash.new{|h,k|h[k] = []}
564デフォルトの名無しさん:2011/10/24(月) 09:43:05.43
>>563
defaultdict
565デフォルトの名無しさん:2011/10/24(月) 10:29:20.32
>>564
できました。ありがとうございました。
566デフォルトの名無しさん:2011/10/24(月) 16:20:19.87
>>562
SOX
567デフォルトの名無しさん:2011/10/24(月) 16:26:32.93
>>563-565
result.setdefault(index, []).append(text) でもいける。
setdefaultの方が一回だけ書くならimportしなくていい分短く書ける。
ただ、毎回オブジェクトつくられるので遅いかもしれない。
568デフォルトの名無しさん:2011/10/24(月) 22:15:56.00
calendar.weekdayは、月曜日が0で、time.strftimeは日曜日が0なのは、
何か理由があるのでしょうか?
calendar、time、datetime。各モジュールの、役割分担がよく解かりません。
使いどころなどで混乱してます。

なるべく単純明快な、すっきりとする解説をお願いします。
(検索したのですが、より混乱しました)
569デフォルトの名無しさん:2011/10/25(火) 03:32:06.37
>>557
l[:]は公式のFAQにも載っている方法なので、安心して使うがいい。

ttp://docs.python.org/faq/programming.html#how-do-i-copy-an-object-in-python
570デフォルトの名無しさん:2011/10/25(火) 03:56:39.68
>>568
calendar.weekdayは、ヨーロッパの慣習に合わせて月曜始まりって
ttp://www.python.jp/doc/2.5/lib/module-calendar.html に書いてあった。
time.strftimeは、C言語のstrftime関数に合わせてあると思われ。

calendar, time, datetimeだが。
大体の場合はdatetimeを使う、と思ってよい。
datetimeは、Pythonで一般的な用途で、日時を扱う場合に使いやすいように作られている。

timeは、datetimeよりもシステム寄りだ。それはつまり、プラットホームや環境に依存するものも多い。
必要ならば使えばいいが、特に理由がなければdatetimeを使うこと。

calendarは、timeとは逆に、datetimeよりも応用的だ。
カレンダー出力や、カレンダーに特化した関数を提供する。
なので、カレンダー関連のことはやりやすいが、汎用性には欠ける。
便利に使える場面では積極的に使うといいが、普段はdatetimeを使うことになるだろう。
571デフォルトの名無しさん:2011/10/25(火) 15:40:44.03
質問です。
Pythonでは、JavaやCのように、式の中に変数への代入は書けませんよね?
例えば下記のような感じに書きたい場合、
if (jk = func1(jc)) == jd: func2(jk)
やはり、jkへの代入文はifの手前に書く方法以外には何も小技は無いのでしょうか?
572デフォルトの名無しさん:2011/10/25(火) 15:57:36.17
jsならできるよ。

なんてボケは要りませんね。はい、失礼しました。
573デフォルトの名無しさん:2011/10/25(火) 16:04:18.20
[func2(jk) for jk in [func1(jc)] if jk == jd]
574デフォルトの名無しさん:2011/10/25(火) 17:45:47.34
>>573
どうも、ありがとう。やればできるのか。
ただ、ちょっと頭が混乱している。宿題になりそう・・・
575デフォルトの名無しさん:2011/10/25(火) 18:10:48.61
(lambda jk: func2(jk) if jk == jd else None)(func1(jc))
の方がよくね?
576デフォルトの名無しさん:2011/10/25(火) 18:26:54.99
まあ、どちらにしても
素直に別で書いたほうが読みやすいだろうな
577デフォルトの名無しさん:2011/10/25(火) 19:12:43.42
クックブックにその話題あったな。

クックブックの回答は、代入文のかわりに値を返すsetメソッドに書き換える。
578デフォルトの名無しさん:2011/10/26(水) 06:43:20.01
黒魔術じゃん
579デフォルトの名無しさん:2011/10/26(水) 07:44:03.74
まあクックブックにも「基本そんなことはするな」的な前置きはあった
580デフォルトの名無しさん:2011/10/26(水) 08:32:38.67
ifの中などの代入なんて、できる言語でも読みにくいだろ
581デフォルトの名無しさん:2011/10/26(水) 08:41:47.86
代入と同時に真偽判定が出来ると、例えば
ひとつの文字列を、大量の正規表現とマッチさせて
最初に見つかったパターンによって分岐…とかがやりやすそうな気がする
582デフォルトの名無しさん:2011/10/26(水) 11:07:17.07
>>571
副作用が気になる書き方だな
583デフォルトの名無しさん:2011/10/26(水) 11:29:03.76
代入を式にしたのは>>571みたいなことするアホコードをなくすためだろ
584568:2011/10/26(水) 12:05:22.76
>>570
ありがとうございます。(遅くなってすいません)
基本はdatetimeモジュールを使用。
それで出来ない場合は、timeを併用。
そのものズバリの機能があれば、calendar。
という使い方を心掛けるようにします。
・・・にしても月0・日0の違いは、いつか引っ掛かる予感…
585568:2011/10/26(水) 14:51:28.32
すいません。追加質問です。
os.path.getctime(__file__)で得た取得したエポック秒を見やすく加工したいのですが、
これは「timeモジュール抜き」ではできないのでしょうか。
「datetimeモジュール」で、直接エポック秒を扱うやり方を発見できないです。
586デフォルトの名無しさん:2011/10/26(水) 15:13:14.87
datetime.datetime.fromtimestamp
587568:2011/10/26(水) 15:49:51.50
>>586
 ありがとうございます。あるんですね…。

timeモジュール
datetimeモジュールの中にdatetime、date、time、というオブジェクト
同じかまたは似た名前の多数のメソッド
・・・迷走は続きそうです。
588デフォルトの名無しさん:2011/10/28(金) 02:01:12.37
datetime.datetimeは日時, datetime.dateは日, datetime.timeは時。
それさえ覚えとけば、特に難しいことはない。
589デフォルトの名無しさん:2011/10/29(土) 15:55:36.87
mod_pythonのテストページ( http://www.python.jp/doc/contrib/modpython/inst-testing.html )は
無事に完了して「PythonHandler mptest」を「PythonHandler mod_python.publisher」に
変更しても無事に動作しました。

そこで、「/test」ディレクトリ配下だけでなく、「/」でも実行できるようにしようと思い、

<Directory "/opt/local/apache2/htdocs"> 〜 </Directory>の中に
> AddHandler mod_python .py
> PythonHandler mod_python.publisher
> PythonDebug On
を追加しましたが、なぜか

> Not Found
> The requested URL /mptest.py was not found on this server.

となってしまいます。当然/htdocs直下にmptest.pyは存在しています。
なぜでしょうか??
自分の環境は下の通りです。

MacOSX Lion
mod_python26 @3.3.1_0 (active)
mod_wsgi @3.3_0+python26 (active)
python26 @2.6.7_1 (active)
python27 @2.7.2_1 (active)
590デフォルトの名無しさん:2011/10/29(土) 16:23:45.61
DocumentRootだかServerRootの値
無事に動作したときのURLとmptest.pyの絶対パス
あとブラウザがNot Foundを表示しているときのApacheのエラーログを晒してみて
591589:2011/10/29(土) 17:01:34.67
>>590
今エラーログとか収集してたんですが、、
実はmod_pythonのURLの判定の仕方が特殊という事に今気づきまして、、
もう少し自分でちょっといじってみたいと思います。
それで無理だったら助けてください。お願いします。
592デフォルトの名無しさん:2011/10/29(土) 17:07:39.56
変数の存在確認ってどうやるの?
try文しかないの?
593589:2011/10/29(土) 17:14:10.81
できたー!!思ってたのと少し違うけどできましたw

ドキュメントルートのmptest.pyへアクセルするには
http://localhost/mptest.py/メソッド名/
としないといけないっぽかったです。
594デフォルトの名無しさん:2011/10/29(土) 19:05:48.42
おい!おまえの書いたURL、アクセスできないぞ
595デフォルトの名無しさん:2011/10/29(土) 19:42:21.81
>>592
dirとか
オブジェクトの属性なら、hasattrとか
596デフォルトの名無しさん:2011/10/29(土) 20:10:04.94
さんきゅー
じゃ予めval=Noneってしといてval is Noneで確認したほうが楽っぽいね
597デフォルトの名無しさん:2011/10/29(土) 21:15:57.51
PHPみたいなもんだと思ってるなら悪い癖だからできるだけ直したほうがいい
598デフォルトの名無しさん:2011/10/29(土) 21:28:54.05
質問なんですが、今日1日がんばってmod_pythonの使い方覚えてたんですが、
Python界の流れ的にmod_pythonは使わずに
mod_wsgiを使って行こうみたいなのってあったりするんでしょうか?
599デフォルトの名無しさん:2011/10/29(土) 21:53:09.61
>>598
mod_pythonはだいぶ前に開発終了してるよ。
ttp://blog.dscpl.com.au/2010/06/modpython-project-is-now-officially.html
600デフォルトの名無しさん:2011/10/29(土) 22:39:48.76
>>598
そうみたいですね。すごい1日ムダに終わった気がしてガックリきました。
今mod_wsgiをコンパイルしてインストールしたので
この後はDjangoかPylons入れてみようと思います。
601デフォルトの名無しさん:2011/10/29(土) 23:00:44.85
>この後はDjangoかPylons入れてみようと思います。
DjangoかFlaskにした方がいいと思う
理由は俺が好きだから
602デフォルトの名無しさん:2011/10/30(日) 00:25:10.06
結局jinja2にしました
理由はGoogleAppEngineで今後公式サポートされるから
たぶん来年はjinja2が盛り上がる
603デフォルトの名無しさん:2011/10/30(日) 01:36:38.72
ん?jinja2ってテンプレートエンジンでは?
604デフォルトの名無しさん:2011/10/30(日) 02:08:20.06
Flaskにしとけ
605デフォルトの名無しさん:2011/10/30(日) 03:12:07.49
時代はPyramidだろ
606デフォルトの名無しさん:2011/10/30(日) 05:19:56.00
Mac OS X で
python -c "import getpass; print(getpass.getpass('Password: '))"
としたらうまくいくのに、それを変数に代入しようとすると
var1=`python -c "import getpass; print(getpass.getpass('Password: '))"`
これでなんかうまくいきません。
具体的には、プロンプトとして表示されるはずの「Password:」が表示されず、
またprintの結果も変数に代入されません。
原因の分かる方いましたら教えて下さい。
607デフォルトの名無しさん:2011/10/30(日) 05:46:29.46
>>606
pythonの問題じゃなくてシェルの使い方の問題と思われ。
608デフォルトの名無しさん:2011/10/30(日) 07:08:10.36
var1=`python -c 'import getpass; print(getpass.getpass("Password: "))'`
609デフォルトの名無しさん:2011/10/30(日) 09:03:25.94
FlaskってWebアプリフレームワークの中の
テンプレートエンジン部分でjinja2使ってるんですね。
勉強になりました
610デフォルトの名無しさん:2011/10/30(日) 13:51:27.64
最近「format」でも「rjust」や「zfill」と同じ事ができる事を知りました。
1.「format」、[zfill系]のどちらが、速度的に有利なのでしょうか?
  ちなみにfor文内で使用します(約3,500回のループ)。
2.下記は同じ結果を出しますが、「まともな書き方」はどれでしょうか?

  val = '21' # 文字列
  ans1 = val.zfill(10)
  ans2 = '{0:0>10}'.format(val)
  ans3 = '{0:0>{1}}'.format(val, 10)
  ans4 = '{0}'.format(val.zfill(10))
611デフォルトの名無しさん:2011/10/30(日) 14:22:28.84
>>610
自分で計れ
612デフォルトの名無しさん:2011/10/30(日) 15:07:20.42
>>608
うぎゃあ!その通りでした。
`backtick` は「'」でなく「"」相当なんですね。勘違いしてました。
613デフォルトの名無しさん:2011/10/30(日) 16:20:07.44
>>> timeit(setup="val='21'", number=3500, stmt="val.zfill(10)")
0.0016031944198573456

>>> timeit(setup="val='21'", number=3500, stmt="'{0:0>10}'.format(val)")
0.0026360597252050866

>>> timeit(setup="val='21'", number=3500, stmt="'{0:0>{1}}'.format(val, 10)")
0.00468989345804971

>>> timeit(setup="val='21'", number=3500, stmt="'{0}'.format(val.zfill(10))")
0.0037554477786585494
614デフォルトの名無しさん:2011/10/30(日) 16:30:47.99
URLエンコードされた多バイト文字を含む文字列を
urllib2でデコードしてからファイルに出力したいと考えています。
いずれもUTF-8で処理しています。

foo = f.readline()
f2.writelines(urllib2.unquote(foo).encode('raw_unicode_escape').decode('utf-8'))
といった具合に読み込み・変換・書き出しを行ってみたのですが、元のURLが
【パターン1】http://www.orenosite.com/search/%A4%DB%A4%B2%A4%DB%A4%B2
【パターン2】http://www.orenosite.com/search/ほげほげ
【パターン3】http://www.orenosite.com/search/(エンコード誤認のため文字化け)
といった具合で、パターン2をunquoteされると多バイト部分が
Unicodeのコード番号に変換され、パターン3に至っては
invalid start byteで処理が中断してしまいます。
パターン2&3については(せめて2だけでも)処理対象から除外したいのですが、
何かよい判定方法はありませんか?
615デフォルトの名無しさん:2011/10/30(日) 18:04:03.45
なんでraw_unicode_escapeなの?
string_escapeじゃだめか?
616デフォルトの名無しさん:2011/10/30(日) 18:36:26.83
MacportsでapacheとPython2をインストールしました。
しかしapacheは/opt/local/binではなく/usr/binのPythonを実行します。
どうやらApacheの環境変数PATHみたいのがおかしいっぽいんですが
この場合どうすればいいんでしょうか?
617デフォルトの名無しさん:2011/10/30(日) 18:59:48.15
/etc/passwd の中見れば apache の PATH の場所がわかる
618デフォルトの名無しさん:2011/10/30(日) 19:20:55.96
>>617
/usr/bin/falseとなってました
619デフォルトの名無しさん:2011/10/30(日) 19:27:48.20
以下のような記述をhttpd.confに書き加えて、

サーバの再起動をしてみたらどうでしょうか。

SetEnv PATH /opt/local/bin
620デフォルトの名無しさん:2011/10/30(日) 20:07:00.29
>>619
ダメでした..
621デフォルトの名無しさん:2011/10/30(日) 20:17:25.93
Apacheはもうオワコン。nginxに乗り換えようぜ。
速いし、設定も簡単。
622デフォルトの名無しさん:2011/10/30(日) 21:05:09.62
オワコン? 枯れた技術って事か、いいことだ
623616:2011/10/30(日) 21:17:31.46
ちなみにmod_wsgiで実行してます
624デフォルトの名無しさん:2011/10/30(日) 21:27:37.82
これじゃねーの?下の項目もちゃんと読めよ
http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIPythonExecutable
625デフォルトの名無しさん:2011/10/30(日) 22:01:04.30
Windowsで2.7.2を使ってます
ElementTreeをインポートするのに下記の2つを試したのですがImportErrorが出ます
 from xml.etree.ElementTree import *
 from xml.etree import ElementTree
どこが間違ってますか?
626デフォルトの名無しさん:2011/10/30(日) 22:16:59.58
エラーメッセージは?
627デフォルトの名無しさん:2011/10/30(日) 22:25:41.77
下のエラーが出ます
Traceback (most recent call last):
File "C:\Users\abc\Desktop\test.py", line 1, in <module>
from xml.etree.ElementTree import ElementTree
File "C:\Users\abc\Desktop\test.py", line 1, in <module>
from xml.etree.ElementTree import ElementTree
ImportError: No module named etree.ElementTree
628デフォルトの名無しさん:2011/10/30(日) 22:30:02.65
>>624
> Note: The WSGIPythonExecutable directive described here has been removed in mod_wsgi version 2.0. The WSGIPythonHome directive should be used instead.

WSGIPythonExecutableはver2.0で削除されたからWSGIPythonHome 使ってねって書いてあると思うのですが
629デフォルトの名無しさん:2011/10/30(日) 22:36:15.70
>>628
おう、その通りだ。よくやったな!
630デフォルトの名無しさん:2011/10/30(日) 22:44:10.33
>>627
標準のでないxml.pyがあって、それをインポートしちゃってるんじゃない?
631625:2011/10/30(日) 23:29:00.20
>>630
sys.pathの場所のどれにも同じ物が無くよくわかりませんでした

C:\Python27に置いて実行したところインポートできたのでとりあえずここで作業します
ありがとうございました
632616:2011/10/30(日) 23:51:38.95
いろいろやってみた結果諦めます。
apacheをmacportsでインスコしてmod_wsgiをソースコンパイルしたのが
原因だと思います。どうしてもPython2.7使いたかったので。。
macportsのmod_wsgiが今のPython2.6から2.7に対応するまで
とりまこのまま行こうと思います。
633614:2011/10/31(月) 00:03:54.78
> 615
たまたまWebで調べていた際にraw_unicode_escapeを
使用する方法が紹介されていたので、そのまま使ってました。
string_escapeでは
TypeError: must be string, not unicode
となってしまいコードが流れません。
634デフォルトの名無しさん:2011/10/31(月) 00:56:05.72
馬鹿には無理
635デフォルトの名無しさん:2011/10/31(月) 01:05:05.71
>>631
モジュールなら、
import xml
print xml.__file__
で邪魔してるファイルがわかる。
636デフォルトの名無しさん:2011/10/31(月) 01:15:20.84
>>633
> たまたまWebで調べていた際に
それはこれか?
http://d.hatena.ne.jp/itasuke/20080703/p1
これは、unquoteにunicodeを渡すという特殊な状況であって
あまり関係ないだろ。

とりあえずstrでファイルからURLを読み込んで、
decode('ascii')をかける。
うまくデコードできたらパターン1だから無問題。
もしUnicodeDecodeErrorが発生したら
パターン2か3だ。
decode('utf-8')をすれば大まかに区別できるが、
パターン3は処理不能やで。
637625:2011/10/31(月) 02:07:22.91
>>635
助かりました、ありがとうございました
ファイルの置いてある場所からも探すんですね、そこのが邪魔してました
638デフォルトの名無しさん:2011/10/31(月) 03:07:53.11
繰り返す。
Apacheはクソ。
639デフォルトの名無しさん:2011/10/31(月) 03:55:54.01
IISでも使ってろ低能
640デフォルトの名無しさん:2011/10/31(月) 06:21:45.65
馬鹿には無理
641614:2011/10/31(月) 06:54:02.39
>> 636
そのサイトとはまた別の所に書いてありました。
とりあえず、例外処理掛けてdecode("ascii")に失敗した時は
ダイレクトでwritelines()するようにしたら所望の結果が得られました。
情報ありがとうございます。
642デフォルトの名無しさん:2011/10/31(月) 10:43:39.75
>> と 数字の間に空白が入ってるとアンカーにならない

他者に対して面倒かけるような書き方すんな!
643デフォルトの名無しさん:2011/10/31(月) 11:15:48.99
そうそう、日本では人様に迷惑をかけることだけはしてはいけないのですよ。
644デフォルトの名無しさん:2011/10/31(月) 11:40:07.14
迷惑と面倒は非なる物ですよ外人さん
645デフォルトの名無しさん:2011/10/31(月) 13:50:26.32
pass
646デフォルトの名無しさん:2011/10/31(月) 15:00:22.54
角電池
647デフォルトの名無しさん:2011/10/31(月) 16:39:34.19
いえーい
648デフォルトの名無しさん:2011/10/31(月) 18:32:00.73
with便利だけどなくても困らないね
649デフォルトの名無しさん:2011/10/31(月) 19:45:00.72
>>613
>>610 です。ありがとうございます。
timeit。これも使える様に調べてみます。
650デフォルトの名無しさん:2011/10/31(月) 20:52:56.40
Windowsの上でPythonを実行するとコマンドプロンプトみたいな黒い画面が
1瞬だけ出ると思うんですが、あれを長時間表示することってできますか?
printとか使うときにあの画面で確認したいんですが
651デフォルトの名無しさん:2011/10/31(月) 21:09:53.99
とても基本的なことだし、知らないと不便だから、コマンドプロンプトの使いかたを覚えなさい。
652デフォルトの名無しさん:2011/10/31(月) 21:10:56.73
ダブルクリックで実行せずにコマンドプロンプトから実行すればいいじゃん
653デフォルトの名無しさん:2011/10/31(月) 21:13:31.88
>>650
1. コマンドプロンプト「から」コマンドで実行する
2. コマンドプロンプトのオプションで自動的に閉じない設定あったような…

ま、コマンドプロンプトの使い方覚えるのを個人的には勧めたいかな
取り敢えず

・cdコマンド
・PATHの通し方

この二つさえ解ればコマンドプロンプトからの実行は出来るかと
654デフォルトの名無しさん:2011/10/31(月) 21:23:44.85
ソースコードの最後にinput()と入れとけ
655デフォルトの名無しさん:2011/10/31(月) 22:41:50.84
>>651>>652>>653
やっぱコマンドプロンプトの使い方も覚えた方がいいんでしょうか。。
>>654
ありがとうございます、printされました!
656デフォルトの名無しさん:2011/10/31(月) 22:52:01.48
すみませ、、もう1つお伺いしたいのですが
↓の画像のようなディレクトリの中にprintCurrentDir.pyってファイルがあったとして
http://up3.viploader.net/ippan/src/vlippan242706.jpg
そのソースの中に
import os
test = os.getcwd()
print test
input()
としても、C:\Users\testDir\python\printDirが出力されずに
C:\Windows\System32\pythonだったかのディレクトリ(うろ覚え)が返されてしまうのですが
これってどうしてなのでしょうか。
657デフォルトの名無しさん:2011/10/31(月) 23:01:49.60
しね
658デフォルトの名無しさん:2011/10/31(月) 23:03:36.55
os.path.abspath(os.path.dirname(__file__))
659デフォルトの名無しさん:2011/10/31(月) 23:05:03.47
スクリプトのパスとカレントディレクトリの意味を勉強し直してからまた来てね坊や
660デフォルトの名無しさん:2011/10/31(月) 23:11:43.19
>>658>>659
なるほど・・・、カレントディレクトリってのの意味がやっとわかりました。。
プログラミングド素人ですみません。。ありがとうございます。
661デフォルトの名無しさん:2011/10/31(月) 23:14:33.66
>>656
再現できなかった。
関連付けの設定をいじってるようなので、
それを元に戻してみたら?

c:\usersはUACの管轄内(うろ覚え)なので
そっちも関係あるかも。
662デフォルトの名無しさん:2011/10/31(月) 23:50:59.99
ちなみにコマンドプロンプトで実行する場合は
cd C:\Users\testDir\python\printDir
python printCurrentDir.pyとかでいいんですかね
663デフォルトの名無しさん:2011/10/31(月) 23:54:26.16
その通り
エディタの中には現在編集中のファイルのカレントディレクトリで
コマンドプロンプトを起動してくれるのがあるから探してみるといいよ
664デフォルトの名無しさん:2011/11/01(火) 00:37:01.27
>>662
そのコマンドの意味が分かったら、バッチファイルにすると良い
バッチファイルとは何ぞや?はその時にでもググりなさい
665デフォルトの名無しさん:2011/11/01(火) 00:46:38.25
正解: Unixを使う
666デフォルトの名無しさん:2011/11/01(火) 01:14:42.97
具体的にはBSD
667デフォルトの名無しさん:2011/11/01(火) 07:15:11.28
unix系のコマンドに慣れてるとコマンドプロンプトは不便だな
PowerShellは独自機能は知らんが
エイリアスでunixコマンドっぽくも使えるようになってるけど
\>python test.py < input.txt
みたいな標準入力のファイルからのリダイレクトが出来なくて
パイプを使って \>cat test.txt | python test.py みたいにするらしい
668デフォルトの名無しさん:2011/11/01(火) 07:31:23.75
\> test.py < input.txt ならいけるんじゃなかったかな
関連付けか何かの都合でそうなってた氣が
669デフォルトの名無しさん:2011/11/01(火) 08:44:33.41
昔も今も、そこはWindowsでも同様に

python test.py < test.txt

って書けるよ、まあ

TYPE test.txt | python test.py

でも間違いとは言えないけれど…(DOS系のTYPEはUnix系のcatに相当)

不便なのは文字コードや " や ^ の解りにくい挙動とか、特殊ファイル名辺り
あとターミナルにあたる機能が最低限しかないところも不便だな
670デフォルトの名無しさん:2011/11/01(火) 08:50:55.44
>>669
コマンドプロンプトじゃなくてPowerShellの話な
671デフォルトの名無しさん:2011/11/01(火) 08:59:23.17
>>669
あれそうだっけ。と思って調べたら逆だった
PowerShellの話にはついていけてないことは言うまでもない

STDIN/STDOUT リダイレクトは、ファイルの関連付けから起動すると動作しないことがある
http://support.microsoft.com/kb/321788

cannot-run-python-script-on-windows-with-output-redirected
http://stackoverflow.com/questions/3018848/
672デフォルトの名無しさん:2011/11/01(火) 10:02:44.19
ちょっと気になったんだけど。
コピーを作りたくないほど大きい、tupleや(変更する予定がない)listがあったとして、
iter(ls[a:]), iter(ls[:b]), iter(ls[a:b]), iter(ls[a:b:c])と等価で、
next()の速度がそれらと(ほぼ)同等なイテレータがほしい場合って、どうすりゃいいの?

(ls[i] for i in xrange(a, b, c))が最善?
673デフォルトの名無しさん:2011/11/01(火) 11:00:24.26
>>656 は perl の web 屋
674デフォルトの名無しさん:2011/11/01(火) 12:03:12.78
>>672
itertools.islice がそれに近いかも。
通常のスライスと挙動が少し違うけど。
675デフォルトの名無しさん:2011/11/01(火) 12:10:14.38
>>654 が安易な解決策を教えたから
>>656 が自分で解決する方法を学ばなかった良い例だな

676デフォルトの名無しさん:2011/11/01(火) 12:58:25.37
Tkinter の canvas で、ある位置の色を取得したいのですが可能でしょうか?
どうすれば取得できるでしょうか?
677デフォルトの名無しさん:2011/11/01(火) 16:01:10.71
申し訳ございませんが、tkのcanvasではピクセル単位の操作はできかねます。
代わりに、画像をcanvasにセットし、その画像を操作することでピクセル描画/取得を
実現することもできますが、この方法ではcanvasの描画命令(線分、円、etc.)が
使えなくなります。
上記で希望が満せない場合は、他のGUI Toolkitの使用を検討してください。
今後ともtkを宜しくおねがい致します。
678デフォルトの名無しさん:2011/11/01(火) 16:40:54.38
はい、こちらこそ。
679デフォルトの名無しさん:2011/11/01(火) 21:50:45.54
sshでパス入力してrootになってテキストファイル編集してコマンド2,3叩いて反応をみるスクリプト組みたいんだけど、python標準ライブラリだけでやるのって大変かな。
対話式コマンドはsubprocessだと難しそうなんだけど。
680デフォルトの名無しさん:2011/11/01(火) 22:44:46.69
Paramikoとか使えば
681デフォルトの名無しさん:2011/11/01(火) 23:02:48.61
sshで対話するのはparamikoが定番かな
682デフォルトの名無しさん:2011/11/01(火) 23:08:50.83
>>674
そのものズバリなものがあったのですね!
けれど>>672のジェネレータの方が早いみたい。
ttp://ideone.com/9LrmH
実用上は、イテレータ回す時間が支配的になることなんてまずないから、
islice使うのがわかりやすくていいのかな。

ttp://www.python.jp/doc/2.6/library/itertools.html#itertools.islice
の実装例見るに、slicableじゃないイテレータにも適用できるような作りになってるから、
slicableなものに対しては効率よくないのかな。
683デフォルトの名無しさん:2011/11/02(水) 13:55:15.61
>>677
そうですか
それは残念です

>>678
おまえ誰やねんwwwwwwwww
684デフォルトの名無しさん:2011/11/02(水) 14:42:23.41
むしろ677が誰なのかと
685デフォルトの名無しさん:2011/11/02(水) 15:08:34.31
@staticmethodでデコレートした関数から、もとの関数を取り出す方法を探してます。

class Foo(object):
 def hello(name): print "hello %s!" % name
 hello = staticmethod(hello)

## staticmethodを取り出す
smethod = Foo.__dict__['hello']
assert type(smethod) == staticmethod

この状態で、smethodからもとのhello()関数を取り出す方法はありますか。
dir(smethod) したけど、それらしいのが見つかりませんでした。
686デフォルトの名無しさん:2011/11/02(水) 15:27:56.29
はじめまして。
みんなのPython第3版(日本語)の461ページの26.1相対インポートの構文
を勉強中なんですが、
モジュールサーチパスで指定してあるフォルダの中の
パッケージ(__init__.pyあり)の中のモジュールで、
同じパッケージのモジュール(other)をインポートしようとして
from . import other
とすると
エラー(ValueError: Attempted relative import in non-package)
となります。なぜだか理由がわかりません。
だれかおしえてください、お願いします。
私の環境は、python(2.5)、eclipse(3.7)、pydev(2.2.1)です。
687デフォルトの名無しさん:2011/11/02(水) 15:49:56.84
686です。
誤り:みんなのPython第3版
正しい:はじめてのPython第3版
でした、すみません。
688デフォルトの名無しさん:2011/11/02(水) 16:39:18.18
>>685
単に Foo.hello とすれば元の関数が取得できます。
helloの部分を可変にしたければ、getattr(Foo, "hello") などのように取得してください。

(原理的に言えば、staticmethod の get descriptor が元の関数をそのまま返すようになって
いるからです。これについて知りたい場合は Pythonのクラスタシステムを実現している
descriptor という仕組みを調べてください。)

検証コード
class Foo(object):
  def hello(name):
    pass
  print id(hello)
  hello = staticmethod(hello)

print id(Foo.hello)
print id(getattr(Foo, "hello")
689688:2011/11/02(水) 16:49:19.72
修正:
☓ クラスタシステム
○ クラスシステム

追記:
質問の通りに答えていませんでした。
staticmethodオブジェクトが手元にあり、そこから元の関数をとりだすなら、get descripterを騙して
smethod.__get__(0) とでもすれば良いでしゅ (0はダミーオブジェクト)
690デフォルトの名無しさん:2011/11/02(水) 17:23:45.63
>>676
windowsでやってみた

from ctypes import *
import Tkinter as Tk

class MyFrame(Tk.Frame):
def __init__(self, parent):
Tk.Frame.__init__(self, parent)
self.c = Tk.Canvas(self, width=320, height=320, relief=Tk.RAISED, bd=2, bg='#99ccff')
self.c.create_rectangle(20, 20, 280, 280, fill='#9966cc', width=2)
self.c.create_line(10, 10, 290, 290)
self.c.create_arc(200, 200, 30, 120)
self.c.pack(side=Tk.LEFT, fill=Tk.BOTH, expand=True)
self.l = Tk.Label(self, text='test', font=('Helvetica', '24', ('bold', )), bg='#ccff99', fg='#6699cc')
self.l.pack(side=Tk.RIGHT, fill=Tk.BOTH, expand=True)
self.pack()
self.c.bind('<Motion>', self.mov)

def mov(self, e):
self.l['text'] = self.getcolor()

def getcolor(self):
hdc = windll.user32.GetDC(0)
c = windll.gdi32.GetPixel(hdc, self.winfo_pointerx(), self.winfo_pointery())
windll.user32.ReleaseDC(0, hdc)
return '%02x, %02x, %02x' % (c & 0x000000ff, (c & 0x0000ff00) >> 8, (c & 0x00ff0000) >> 16)

root = Tk.Tk()
f = MyFrame(root)
root.mainloop()
691デフォルトの名無しさん:2011/11/02(水) 20:04:38.39
>>690
できました
ありがとうございます
692688:2011/11/02(水) 20:09:00.28
クソスプラットフォーム性は失われるけどな
693デフォルトの名無しさん:2011/11/02(水) 20:40:33.49
やばい死ぬ
694デフォルトの名無しさん:2011/11/02(水) 21:19:18.69
695デフォルトの名無しさん:2011/11/02(水) 21:32:40.17
>>694
いいねぇ
696デフォルトの名無しさん:2011/11/02(水) 23:29:50.29
Would you please translate >>694 to Japanese?
697デフォルトの名無しさん:2011/11/03(木) 18:07:27.36
これからPythonのテンプレートエンジンはjinja2を推していきませんか?
698デフォルトの名無しさん:2011/11/03(木) 18:15:47.02
神社?
699デフォルトの名無しさん:2011/11/03(木) 18:17:22.23
うん。おそらく親日の外人さんが作ってる
700デフォルトの名無しさん:2011/11/03(木) 18:33:08.01
とするとPychinkoやもOOoPyも
701デフォルトの名無しさん:2011/11/03(木) 19:08:34.14
>>700
どっちかと言うと、そう言うのは日本人の方が作りそう。。。
702デフォルトの名無しさん:2011/11/03(木) 21:37:36.31
>>694
否定的ですまんが、こういうのってhidden featuresっていうの?
もっと、公式のドキュメントやリファレンスにも書かれていない内容を期待してたよ。
703デフォルトの名無しさん:2011/11/03(木) 22:13:14.04
704デフォルトの名無しさん:2011/11/03(木) 22:51:44.51
Cookieモジュールを使ってレスポンスヘッダーにクッキーを追加しようと思ってます。
RFCの仕様を読んでると

> Set-Cookie: name1=value1; expires=Sun, 10-Jun-2001 12:00:00 GMT; path=/HTTP/

のようにname1=value1と書いてますが、yahoo.co.jpへアクセスすると

> Set-Cookie: Y=v=1&n=co3av5c5h0gvk&l=hcic2tzu/o&p=m2gvvjpb53000200&ig=00cpp&r=ci&lg=ja-JP&intl=jp&np=1; path=/; domain=.yahoo.co.jp

みたいにクエリー文字列っぽく「name1=value1」の部分が記述されています。
これは「name1=value1」のように1対1の書式を無視して、このような方法を使用してるんでしょうか?
705デフォルトの名無しさん:2011/11/03(木) 23:02:32.31
name1がYで
value1がv=1&n=co3av5c5h0gvk&l=hcic2tzu/o&p=m2gvvjpb53000200&ig=00cpp&r=ci&lg=ja-JP&intl=jp&np=1
じゃないだろうか
706704:2011/11/03(木) 23:25:40.75
一応Googleも調べたんですが、yahooのようなやり方はしてなかったんで、
「1ドメインにつき使用可能クッキー20個まで」の制約に対する節約のためにやってるんでしょうかね。
そういうことにしておこうと思います。
ありがとうございました
707デフォルトの名無しさん:2011/11/04(金) 03:04:38.96
Python初心者です。
わからないところがあるので質問させていただきます。
2つのテキストファイルを読み込んでそれぞれを配列にして比較したいのですが
for line in text_file:
txet_list = line.strip().split()
for line in text2_file:
txet2_list = line.strip().split()
if(txet_list[0] == txet2_list[0])
・・・・・・
elif(txet_list[10] == txet2_list[10])




配列の保持ができないため、比較ができないという問題に陥っています。
2つのテキストファイルは両方とも
英単語半角スペース英単語半角スペース英単語半角スペース英単語半角スペース・・・・・
どなたか解決策を教えて頂けないでしょうか?
よろしくおねがいします.
708デフォルトの名無しさん:2011/11/04(金) 03:20:26.40
>>707に書き間違えがありました。
正確には

英単語半角スペース英単語半角スペース英単語半角スペース英単語半角スペース・・・・・
英単語半角スペース英単語半角スペース英単語半角スペース英単語半角スペース・・・・・



です。
709デフォルトの名無しさん:2011/11/04(金) 04:35:39.74
それじゃtext_listには最後の行の英単語しか入らないよ。
最後に空行があれば空のリストになるし。
txet_list = text_file.read().strip().split()
とすれば全部一度に読めると思う。
710デフォルトの名無しさん:2011/11/04(金) 04:53:34.00
>>709
ありがとうございました。
711デフォルトの名無しさん:2011/11/04(金) 05:01:32.12
質問です。
[[,,,,,,,,,,,,,][,,,,,,,,,,,,,][,,,,,,,,,,,,,][,,,,,,,,,,,,,][,,,,,,,,,,,,,]]
lists[i][7]
上記のようなリストがあったとしてリストの中のリストは7で固定して,リストのiを0〜250まで回すにはどのように書けばいいのでしょうか?
わかる方がいらっしゃいましたらよろしくお願いします。
Vは2.7.2です。
712デフォルトの名無しさん:2011/11/04(金) 05:24:08.21
どうしたもこうしたのも for i in lists: i[7] じゃねえの
713デフォルトの名無しさん:2011/11/04(金) 05:28:56.72
>>709
>>707はインデントが消えちゃってる

まずいところあったら添削希望
http://codepad.org/R41i1UQT
714デフォルトの名無しさん:2011/11/04(金) 07:27:54.43
>>697-699
template engine

temple

神社
715デフォルトの名無しさん:2011/11/04(金) 07:34:04.56
神社はshrineな
716デフォルトの名無しさん:2011/11/04(金) 07:34:24.63
>>713
センスのかけらもない
717デフォルトの名無しさん:2011/11/04(金) 08:52:56.35
genshi も忘れないで下さい。
718デフォルトの名無しさん:2011/11/04(金) 10:56:06.27
そういえば tanjin っつーのも聞いたことあるが temjin だったかな
719デフォルトの名無しさん:2011/11/04(金) 10:57:31.74
720デフォルトの名無しさん:2011/11/04(金) 12:19:37.55
センスのあるコードを>>716が書けば解決
721デフォルトの名無しさん:2011/11/04(金) 12:59:17.93
>>712
自分のやり方が悪いのかもしれませんが、できませんでした。
何がいけないのでしょうか?
722デフォルトの名無しさん:2011/11/04(金) 13:31:41.61
質問者は酉つけろ
723デフォルトの名無しさん:2011/11/04(金) 15:29:23.66
出来ませんでしたって何?
代わりにどういう結果になってしまうとか、どんなエラーが出るとか言ってもらわないと
724デフォルトの名無しさん:2011/11/04(金) 15:49:19.38
>>723
ごめんなさい。
範囲外を指定した場合にでるlist index out of rangeというエラーが出ます。
725デフォルトの名無しさん:2011/11/04(金) 16:00:30.70
>>723
上のエラーはこちらのミスでした。
申し訳ありません。
for i in lists: i[7]自体を実行してもエラーは出ませんが、そのあとに出力確認のprintをしようとすると
print
^
とでてしまいます。
どうすればよいのでしょうか?
726デフォルトの名無しさん:2011/11/04(金) 16:17:14.34
>>723
解決しました。
ありがとうございました。
727デフォルトの名無しさん:2011/11/04(金) 17:30:36.95
>>725
例外の型名を書いてもらわないとわからないし、
printステートメントだけでは、出力確認にならないと思うのだが?
728デフォルトの名無しさん:2011/11/04(金) 17:40:57.14
自演うぜー
729デフォルトの名無しさん:2011/11/04(金) 20:50:03.28
なにがなんだか
730デフォルトの名無しさん:2011/11/04(金) 22:19:26.49
テスト
731デフォルトの名無しさん:2011/11/04(金) 22:29:30.19
732デフォルトの名無しさん:2011/11/05(土) 02:54:59.18
Win32APIを見ると蕁麻疹が起きる。
733デフォルトの名無しさん:2011/11/05(土) 07:23:30.21
test/foo_test.py の中から
test/helpers.py を読みたいとき、
どうするのがいいですか。

試したの:
import helpers # 失敗
from . import helpers # 失敗

python test/foo_test.py でも
(cd test; python foo_test.py) でも
うまく動くのを希望します。

なおRubyだと
require File.join(File.basename(__FILE__), 'helpers.rb')
でうまくいくので、Pythonでのやり方を教えて下さい。
734デフォルトの名無しさん:2011/11/05(土) 07:30:44.61
同じフォルダなら import helpers でうまくいくはずだけど
735デフォルトの名無しさん:2011/11/05(土) 07:36:29.46
if(list1[1:] == list2[1:]):
・・・テキストに書き込む
elif(list1[1:] != list2[1:] and ここに何を書けばいいのかわからないです):
・・・テキストに書き込む

一行目では同じ配列の値達をテキストに書き込んでます。
ここはできています。
その上でelifでlist1の配列の値達(既に書き込まれているのは書かない&list2の値達は書かない)をテキストに書き込みたいのですが、
条件は満たしているものの、同じ値達がたくさんファイルに書き込まれてしまう(ループしているため)という問題が発生しています。
この状況を打破するためにelifの()に何を追加すればいいでしょうか?

教えてください、お願いします。
736デフォルトの名無しさん:2011/11/05(土) 07:56:38.97
>>733
>require File.join(File.basename(__FILE__), 'helpers.rb')
違った、
require File.join(File.dirname(__FILE__), 'helpers.rb')
でした。
737デフォルトの名無しさん:2011/11/05(土) 07:58:31.76
>>734
それは
test/foo_test.py
をモジュールとして読み込んだ場合のことで、
python test/foo_test.py
とした場合にはうまくいかないんじゃないでしょうか。
738デフォルトの名無しさん:2011/11/05(土) 08:04:57.90
うまくいくけど
739デフォルトの名無しさん:2011/11/05(土) 09:02:11.34
クラスメソッド(@classmethod)と静的メソッド(@staticmethod)の使い道がわかりません。
この2つのメソッドは他の通常のメソッドと比べると何が良いんでしょうか?
740デフォルトの名無しさん:2011/11/05(土) 11:26:08.20
>>737
if __name__ == '__main__'
とかあったりする?
741デフォルトの名無しさん:2011/11/05(土) 11:35:03.96
>>737
問題なかったが
742デフォルトの名無しさん:2011/11/05(土) 12:09:18.40
__init__.pyの問題とか
743デフォルトの名無しさん:2011/11/05(土) 19:00:52.51
リバースエンジニアリング借りれたからやるけどぱっと流し読んだ感じ今後役に立つのかこれ・・・てかんじ
744デフォルトの名無しさん:2011/11/05(土) 21:59:40.05
pyqt4
QLineEditの文字入力を右から左にしたいんですが
setAlignmentメソッドの引数に何設定したらいいすか。

self.lineEditBin = QtGui.QLineEdit(self)
self.lineEditBin.setAlignment(Qt::Alignment flag)
745デフォルトの名無しさん:2011/11/05(土) 22:13:32.37
自己解決しました。QtCore.Qt.AlignRightでいけました。
746デフォルトの名無しさん:2011/11/05(土) 23:53:04.33
やばいwww
mod_wsgiにwebobインストールしたらめっちゃカッコイイ感じになったwww
最強すぐるwwww
747デフォルトの名無しさん:2011/11/06(日) 00:12:19.93
webobってwerkzeugみたいなもん?。
748デフォルトの名無しさん:2011/11/06(日) 00:56:05.23
werkzeugがなんなのか知らん
749デフォルトの名無しさん:2011/11/06(日) 01:33:14.71
webobのほうが軽量かな。
750デフォルトの名無しさん:2011/11/06(日) 04:02:11.11
python2.7のunittestで提供されている、expectedFailure()の使い道がわかりません。

ttp://docs.python.org/library/unittest.html
unittest.expectedFailure()
Mark the test as an expected failure. If the test fails when run, the test is not counted as a failure.

どのような時に使うのでしょうか。
751デフォルトの名無しさん:2011/11/06(日) 06:04:29.40
Flaskでアプリケーションを作り、デバッグ用サーバを起動しました。
Firefoxでアクセスすると、ページのロードがとてつもなく遅いのですが何故でしょうか。
Chrome, IE8では瞬時にロードされます。
752751:2011/11/06(日) 07:28:28.86
FirefoxのIPv6を無効化したら、とりあえず問題は起きなくなりました...
原因は不明ですが。
753デフォルトの名無しさん:2011/11/06(日) 07:51:31.18
今日はvirtualenvとwerkzeugインストールしてみるwwwww
754デフォルトの名無しさん:2011/11/06(日) 09:38:24.78
>>752
それが原因だろうw
755デフォルトの名無しさん:2011/11/06(日) 10:38:27.33
ヤバイwww
本命はwebobじゃなくてwerkzeugだったっぽいwwwww
Pythonでwebアプリ作る環境はmod_wsgiとwerkzeug(読み方不明)のタッグが最高っぽいwww
756デフォルトの名無しさん:2011/11/06(日) 11:22:56.33
>>755
werkzeug(ウァークツォイグ) == ドイツ語で「道具」の意。
どうせならFlaskも試せば?
757デフォルトの名無しさん:2011/11/06(日) 11:36:27.08
>>756
Pythonでセッション管理する簡単なツールを探るのがそもそもの目的だったんだけど
Flaskってwerkzeugとjinja2をまとめただけでしよ?ならチェックしなくていいかな
って思ってる
これからwebapp2をいじってみる

758デフォルトの名無しさん:2011/11/06(日) 11:37:55.78
>>756
ちなみに読み方サンクス
759デフォルトの名無しさん:2011/11/06(日) 12:26:48.96
Battery Inserted
760デフォルトの名無しさん:2011/11/06(日) 14:02:12.37
>>689
>追記:
>質問の通りに答えていませんでした。
>staticmethodオブジェクトが手元にあり、そこから元の関数をとりだすなら、get descripterを騙して
>smethod.__get__(0) とでもすれば良いでしゅ (0はダミーオブジェクト)

遅れましたが、これでいけました。ありがとうございましゅ。
761デフォルトの名無しさん:2011/11/06(日) 15:11:52.22
やばいwww webapp2よくわかんないwww
GoogleAppEngine無しでも使えるとか書いてあるのに使えないwwww
webapp2どうやって使ったらいいかわかんないwww
762デフォルトの名無しさん:2011/11/06(日) 15:27:31.72
PyScripterにブレークポイント貼っても止まらないや・・・
763デフォルトの名無しさん:2011/11/06(日) 15:38:37.05
Pythonで日曜プログラミングを初めて半年になるけど、気に入ったぞこれ。
endや閉じ括弧が不要って、行がかさばらなくていいね。
764デフォルトの名無しさん:2011/11/06(日) 15:46:14.46
まあ他言語でもLispみたいに閉じ括弧を文末に書いちゃえば行はかさ張らないけどね
でも大半の言語では読みにくいと言われるだろうなw
765デフォルトの名無しさん:2011/11/06(日) 15:51:27.88
>>733
__init__.py書いてないだろ
766デフォルトの名無しさん:2011/11/06(日) 15:55:21.78
>>756
その発音はおかしい
767762:2011/11/06(日) 16:16:42.69
PyScripterってデバッグ実行しないとブレークしないのね・・・。
スクリプト実行すんのに通常実行とデバッグ実行の区別とか・・・。
768デフォルトの名無しさん:2011/11/06(日) 16:21:00.16
馬鹿には無理
769デフォルトの名無しさん:2011/11/06(日) 17:06:22.08
python -c "print(__debug__)"
python -O -c "print(__debug__)"
770デフォルトの名無しさん:2011/11/06(日) 17:34:14.11
ctypes気に入った
これでC言語にはおさらばだぜ
771デフォルトの名無しさん:2011/11/06(日) 19:11:32.20
最近の若いやつは6P電池の存在を知らないから困る。
772デフォルトの名無しさん:2011/11/06(日) 20:03:17.75
6P電池とはなんすか先輩
773デフォルトの名無しさん:2011/11/06(日) 20:31:31.94
なめると電気の味がする
774デフォルトの名無しさん:2011/11/06(日) 21:13:40.56
6P型電池って角電池のことだろ。
端子の上にシャープペンの芯を置くと発火して楽しかったな。
775デフォルトの名無しさん:2011/11/06(日) 22:21:40.36
006P同士向かい合わせで結合するんじゃないのか
776デフォルトの名無しさん:2011/11/06(日) 23:31:25.77
リストにstr型の文字と数字が入ってたとして、数字に変換できるstr型がきたら
処理をしたいのですがどういう風に書けばいいでしょうか?

自分は
if(中身):
処理
と書きたいのですが中身が思いつきません。

どなたかわかる方が居たらお願いします。
777デフォルトの名無しさん:2011/11/07(月) 00:00:07.60
try:
 d = int(s)
except ValueError:
 整数に変換できないときの処理
else:
 整数に変換できたときの処理
778デフォルトの名無しさん:2011/11/07(月) 00:46:08.72
>>776
if str.isdigit(): # 10進文字列確認. strはstr型.
if str.isxdigit(): # 16進文字列確認.
779デフォルトの名無しさん:2011/11/07(月) 05:56:59.98
>>766
ヴェルクツォイヒ?
780デフォルトの名無しさん:2011/11/07(月) 14:41:23.55
ザウァークラウト
781デフォルトの名無しさん:2011/11/07(月) 15:56:17.49
>>778
-123
とか
1.23
とかだと失敗するんですが
782デフォルトの名無しさん:2011/11/07(月) 18:37:14.50
>>781
少しは自分で頑張れよw
783デフォルトの名無しさん:2011/11/07(月) 19:22:54.90
eval(s)


なんてやるなよ! 絶対だぞ!
784デフォルトの名無しさん:2011/11/07(月) 20:23:42.87
>>765
その通りだった!
相対importがぜんぜんうまくいかなくて困ってたんだ。
touch __init__.py したらうまくいった。超感謝。
785デフォルトの名無しさん:2011/11/07(月) 21:24:36.90
ズコー
786デフォルトの名無しさん:2011/11/07(月) 21:52:03.45
初心者スレもう一度作った方が良さそうな勢いだな
787デフォルトの名無しさん:2011/11/08(火) 04:01:04.75
>>784
どういたしまして
788デフォルトの名無しさん:2011/11/08(火) 11:39:31.97
>>750
仕様変更とかで失敗することが分かっているが失敗しても問題無いテストにつけておくんじゃないの?
他のテストの失敗が埋れないように。
789デフォルトの名無しさん:2011/11/08(火) 21:30:48.77
2.6.6ベースの新しい日本語訳ドキュメントが出てた
http://www.python.jp/doc/release/
http://sourceforge.jp/projects/pythonjp/releases/
790デフォルトの名無しさん:2011/11/09(水) 05:06:36.77
報告乙
791デフォルトの名無しさん:2011/11/09(水) 09:43:59.39
3.xの日本語ドキュメントがなかなか出ないせいで、英語版読むのに慣れちゃったよ、
「せいで」というよりも、「おかげさまで」なんだけどね・・・
792デフォルトの名無しさん:2011/11/09(水) 09:49:04.07
というかmatplotlibとかのライブラリのドキュメントとか全部英語だし
英語読めないと結局出来ないこと多いじゃん
793デフォルトの名無しさん:2011/11/09(水) 12:10:55.74
日本語の方がわかりやすいとは限らない
794デフォルトの名無しさん:2011/11/09(水) 17:00:18.30
リファレンスの[]の意味がよくわかりません。
たとえば
int([x[, base]])の[]はどういう意味なのでしょうか
795デフォルトの名無しさん:2011/11/09(水) 17:05:37.85
省略可能ってこと

>>> int(), int(12.3), int("4"), int("1011", 2)
(0, 12, 4, 11)
796デフォルトの名無しさん:2011/11/09(水) 17:06:14.26
>>794
引数baseは付けても、付けなくてもいい

>>> int('10')
10
>>> int('10', 10)
10
>>> int('10', 16)
16
797デフォルトの名無しさん:2011/11/09(水) 17:18:34.35
>>795
>>796
ありがとうございました
798デフォルトの名無しさん:2011/11/09(水) 17:56:32.11
>>794 はunix使ったことないんだな
799デフォルトの名無しさん:2011/11/09(水) 18:29:04.41
Windowsでも [] 表記するコマンドはあるよ
800デフォルトの名無しさん:2011/11/09(水) 19:23:10.27
マニュアルに [] 書くのは unix かそれ以前からある
Windows というか MSDOS とかはそれの真似
801デフォルトの名無しさん:2011/11/09(水) 19:39:51.50
OSというよりは、コマンドラインや
プログラミングに慣れてるかどうかだと思うかな
Windows使いでもコマンドプロンプト使ってたらよく見る表記だし
他の言語のマニュアルでもよく見る表記
802デフォルトの名無しさん:2011/11/09(水) 23:24:16.12
起源は BNF 記法あたりだと思うが。
803デフォルトの名無しさん:2011/11/10(木) 00:04:20.52
3.xの日本語ドキュメントより2.7をやって欲しいわ
2.6と2.7の新機能のとこを最初にやって、
後は適当に好きなとこから翻訳してくれ
804デフォルトの名無しさん:2011/11/10(木) 04:31:51.77
結論: 英語読め
805デフォルトの名無しさん:2011/11/10(木) 10:01:37.37
マやっているかぎり、英語読むか、土方に甘んじるか、これしか選択肢がありませんね。
まぁ英語は、脱土方の必要条件であり、十分条件じゃないけど・・・

職業マじゃなければ・・・日本語リソーソの範囲だけで満足できる?
806デフォルトの名無しさん:2011/11/10(木) 11:32:53.21
pythonって、unittestで書いたテストクラスってどこに置くのが一般的ですか?
base/mainにソースがある場合、base/testに置いてPYTHONPASSに両方加える?

PYTHONPASSって動的に変えるべき?
807デフォルトの名無しさん:2011/11/10(木) 12:50:23.29
>>805
趣味でやってる方が興味本位で面白そうなところに首を突っ込むので
英語の資料に当たる確率は高いかと。

google翻訳先生に頼りまくり。
808デフォルトの名無しさん:2011/11/10(木) 15:57:19.77
>>806
ソースコードのルートが src/ だとする。
src/tests/ にテストを置いて、空の src/tests/__init__.py も置いておく。
こうすると unittest (もしくはunittest2) のディスカバリ機能が使えて、

$ python -m unittest discovery

で全てのテストスクリプトが実行される。
809デフォルトの名無しさん:2011/11/10(木) 18:13:20.78
このサイトのプログラムを試しているのですが
ttp://d.hatena.ne.jp/saitodevel01/20101123/1290520610
うまく動きません
たすけて><
810デフォルトの名無しさん:2011/11/10(木) 18:20:29.65
エラーぐらい書けゴミクズ
811デフォルトの名無しさん:2011/11/10(木) 19:59:08.82
事故解決できました
ありがとうございました
812デフォルトの名無しさん:2011/11/10(木) 20:53:09.88
職業マってなんぞ?
813デフォルトの名無しさん:2011/11/10(木) 20:57:12.41
職業プログラマ
814デフォルトの名無しさん:2011/11/10(木) 21:00:48.63
え?プログラマ以外に何があんのよ
815デフォルトの名無しさん:2011/11/10(木) 21:27:48.36
Python3の日本語出力って、どうすればいいの?

# -*- coding: utf-8 -*-
print("はろー")

というコードを書いて

$ python -V
Python 3.2.1
$ python foo.py
Traceback (most recent call last):
File "foo.py", line 2, in <module>
print("¥u306f¥u308d¥u30fc")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
$ LANG=ja_JP.UTF8 python foo.py # 同じエラー
$ LANG=ja_JP.UTF-8 python foo.py # 同じエラー
$ LANG=ja_JP.utf8 python foo.py # 同じエラー
$ LANG=ja_JP.utf-8 python foo.py # 同じエラー

まさか、ハローワールドで引っかかるとは思わなかった。
で、どうすればいいの?
ぐぐったところでは、環境変数$LANGの設定でいけるとあるんだけど。



816デフォルトの名無しさん:2011/11/10(木) 21:29:01.52
ズコー
817デフォルトの名無しさん:2011/11/10(木) 21:29:41.35
setdefaultencoding 禁止
818デフォルトの名無しさん:2011/11/10(木) 21:47:28.46
2.5 で urllib2 を使っているのですが
User-Agent の変更の仕方が判りません
女子高生に教えるつもりでやさしく教えてください
819デフォルトの名無しさん:2011/11/10(木) 21:49:25.04
# -*- coding: utf-8 -*-
print(b"はろー")
820デフォルトの名無しさん:2011/11/10(木) 21:49:40.25
>>818
しゃぶれよ
821デフォルトの名無しさん:2011/11/10(木) 21:51:52.83
事故解決できました
ありがとうございました
822デフォルトの名無しさん:2011/11/10(木) 21:54:47.26
馬鹿には無理
823デフォルトの名無しさん:2011/11/10(木) 22:20:55.79
# -*- coding: utf-8 -*-
print("はろー".encode(encoding='urf-8'))
824デフォルトの名無しさん:2011/11/10(木) 22:40:24.57
おいプログラマー以外になにがあるんだよ
825デフォルトの名無しさん:2011/11/10(木) 22:41:51.26
PYTHONIOENCODING=utf8
826デフォルトの名無しさん:2011/11/10(木) 23:01:37.98
>>819
やってみたけどだめだった。
$ py foo.py
File "foo.py", line 2
print(b"¥u306f¥u308d¥u30fc")
^
SyntaxError: bytes can only contain ASCII literal characters.

>>823
>print("はろー".encode(encoding='urf-8'))
LookupError: unknown encoding: urf-8
だと思ったら、utf-8がurf-8になってたのね。utf-8に修正して実行したら
$ py foo.py
b'¥xe3¥x81¥xaf¥xe3¥x82¥x8d¥xe3¥x83¥xbc'
だめじゃん

おい、ほんとどうやったらいいんだよ。
ぐぐってもろくな情報でてこないし、Python3やめたほうがいいのか?
827デフォルトの名無しさん:2011/11/10(木) 23:13:40.51
print(str("はろー".encode(encoding='utf-8')))
828デフォルトの名無しさん:2011/11/10(木) 23:14:36.77
>>826
お前には無理だから止めとけ。
829デフォルトの名無しさん:2011/11/10(木) 23:16:07.73
馬鹿には無理
830デフォルトの名無しさん:2011/11/10(木) 23:17:26.54
831デフォルトの名無しさん:2011/11/10(木) 23:19:12.43
Ruby って Windows に冷たいよね
832デフォルトの名無しさん:2011/11/10(木) 23:19:41.37
immunity debuggerのimmlibモジュールのインポートを試みた際debuggerモジュールがねえよと怒られます
debugger.pyでググったところvimのpluginどうのが引っかかったんですがよくわからんのですがどうすればいいでしゅか
833デフォルトの名無しさん:2011/11/10(木) 23:25:31.27
事故解決できました
ありがとうございました
834デフォルトの名無しさん:2011/11/10(木) 23:51:22.45
>>827
>print(str("はろー".encode(encoding='utf-8')))
結果は>823と同じだった。
$ py foo.py
b'¥xe3¥x81¥xaf¥xe3¥x82¥x8d¥xe3¥x83¥xbc'

>>828
そうだな、おれには828を相手にするのは無理みたいだ

>>830
そこにさ、環境変数$LANGを設定すればいいってかいてあるじゃん、
だから>815でやったように、$LANGをいろいろ設定したんだけど、だめだった。
835デフォルトの名無しさん:2011/11/10(木) 23:57:57.70
日本語を表示できない端末なんじゃね
836デフォルトの名無しさん:2011/11/11(金) 00:04:55.72
>>815
sys.stdout.encodingが何になってるか見たいが、
面倒くさいので、これで動くや炉

import sys
import codecs
sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer)
print('日本語')
837デフォルトの名無しさん:2011/11/11(金) 00:08:56.96
馬鹿には無理
838デフォルトの名無しさん:2011/11/11(金) 00:12:05.24
>>818
2.5で動かしてないけど

import urllib2
print urllib2.urlopen(urllib2.Request('http://www.example.com/', headers = {'User-Agent' : 'foo'})).read()
839デフォルトの名無しさん:2011/11/11(金) 00:18:26.47
>>834
ちなみにlocale -aとlocaleは?
840デフォルトの名無しさん:2011/11/11(金) 00:20:54.61
>>836
>sys.stdout.encodingが何になってるか見たいが、
US-ASCII
まあエラーメッセージに書いてあるわな

>import sys
>import codecs
>sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer)
>print('日本語')

これでうまくいきました!
でもこんなこと、みんなやってますか?
日本語表示するだけなのに、ややこしい。
しかもsys.stdoutを入れ替えるなんて。
これってsys.setdefaultencodingなみにまずいような気がします。
sys.setdefaultencodingがだめでsys.stdoutの書き換えはだめじゃないなら、理由が知りたい。
841デフォルトの名無しさん:2011/11/11(金) 00:23:20.06
やってないよ

% cat foo.py
print("はろー")

% python foo.py
はろー
842デフォルトの名無しさん:2011/11/11(金) 00:48:16.06
Python3 を端末上で実行すると、
print(...) 関数は unicode文字列を sys.stdout.encoding にエンコードして印字するから、
sys.stdout.encoding が US-ASCII になってるのはマズイよ。

LANG とか LC_* がおかしいのか、他に原因があるのか。
843デフォルトの名無しさん:2011/11/11(金) 01:01:05.73
localeの取得に失敗するとfallbackでUS-ASCIIになるんじゃないかなあと推測

% LANG=ja_JP.HOGE python foo.py
Traceback (most recent call last):
File "foo.py", line 1, in <module>
print("\u306f\u308d\u30fc")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
844デフォルトの名無しさん:2011/11/11(金) 01:01:20.80
$ set LANG=en_US.UTF-8
$ set LANGUAGE=en_US.UTF-8
$ set LC_ALL=en_US.UTF-8
$ set LC_CTYPE=en_US.UTF-8
$ set LC_MESSAGES=en_US.UTF-8
$ set LC_TIME=en_US.UTF-8
$ set LC_MONETARY=en_US.UTF-8
$ set LC_COLLATE=en_US.UTF-8
$ set LC_NUMERIC=en_US.UTF-8
$ python foo.py
845デフォルトの名無しさん:2011/11/11(金) 08:42:00.93
>>808
ありがとうございます。
と言うことは、srcの中にsubというフォルダを更に切る時は
src/ メインのソースを置く
src/sub/ サブ階層のソースを置く
src/test/ メインのテストを置く
src/sub/test/ サブ階層のテストを置く

でしょうか?

テスト階層を取り除いたソースだけをパッケージングする機能もあったりするんですか?

discovery機能は便利そうなので早速使ってみます。
ありがとうございます!
846デフォルトの名無しさん:2011/11/11(金) 09:04:58.96
>>845
ディスカバリを使うならどう置いてもいいよ。ディレクトリの切り方とか名前に決まりはない。
aaa.py と test_aaa.py を同じディレクトリに入れてもいいし、importの記述さえ正しければ、無茶苦茶な配置にしても動く。
ただしディスカバリは、ディスカバリを起動した場所からパッケージとして認識されるディレクトリのみを
再帰的に読み込むので、配下のディレクトリすべてに __init__.py を入れるのをお忘れなく。

ちなみにディスカバリを使うときは、テストスクリプトのファイル名を test***.py という
形式にする必要があるので注意(設定で変更可)。

パッケージングに関しては知らないけど、distutils (setup.py) でテストを除外するようにうまく設定できるはず。
847デフォルトの名無しさん:2011/11/11(金) 09:14:08.59
角電池
848デフォルトの名無しさん:2011/11/11(金) 11:46:17.57
>>846
ありがとうございます。
pythonを始めたばかりで、
とりあえずテストが動いては居るんですが
テスト以外だけを取り出しやすい楊に作っておきたいというのが目的です。
setup.pyとかの使い道は全くわかっていないので、ゆっくり勉強していきたいです。
849デフォルトの名無しさん:2011/11/11(金) 12:53:11.65
>>840
Javaのひとはみんなやってるお()
850デフォルトの名無しさん:2011/11/11(金) 15:13:20.18
Java知らないけどこういう印象

reader = new TextReader(new BufferedIOStream(new FileStream(new File("hoge.txt", File.READ)), new UTF8Decoder()))
851デフォルトの名無しさん:2011/11/11(金) 16:57:43.01
2.x だと stdout が file で、出力をリダイレクトしたときに ascii codec に
なるという訳のわからない仕様になっているため、Unicode の出力をエラーに
しないために sys.stdout への代入は必須。その点は 3.x では問題なくなったはず。
852デフォルトの名無しさん:2011/11/11(金) 19:52:48.52
21世紀にもなって、未だにマルチバイトにいちいち気を遣わねば
ならない現状を見ると、つくづくB-TRONがつぶされたのが悔やまれる
853デフォルトの名無しさん:2011/11/11(金) 22:30:34.35
>>851
そのかわり3.xはstdioにバイナリ流そうと思うと面倒くさくなる仕様。

>>852
つぶされた?誰に?
854デフォルトの名無しさん:2011/11/11(金) 22:38:46.67
画像処理関係で、Pythonのおすすめモジュール教えてくだしあ
855デフォルトの名無しさん:2011/11/11(金) 22:45:59.53
俺も知りたい
とりあえずopencv使ってるけど
856デフォルトの名無しさん:2011/11/11(金) 22:51:59.13
未だにTRONに幻想を抱いてる奴がいるのか。ネトウヨだけだと思ってた。
プロジェクトXとかいうクソ番組の功罪は大きいな。
857デフォルトの名無しさん:2011/11/11(金) 23:10:55.03
858デフォルトの名無しさん:2011/11/12(土) 00:49:47.16
それは入門記事で、リファレンスじゃないじゃん。
859デフォルトの名無しさん:2011/11/12(土) 01:33:16.79
すみません。
これからPythonの勉強を始める者です(今までは、C、Java、C#などを経験してきました)。
3点ほど質問させてください。

1. これからPythonを学ぶ場合、2系と3系のどちらが良いでしょうか?
2. Webで学ぶ場合お勧めのページはどれでしょうか?

お金をかけたくないので、極力Webの情報だけで一通り勉強できればと思っています。
また、最終的な目標はゲーム製作です。

よろしくお願いいたします。
860デフォルトの名無しさん:2011/11/12(土) 02:49:27.64
>>859
1) 2系
2) チュートリアルとリファレンスマニュアル
http://www.python.jp/doc/release/

3系は対応していない3rdPartyライブラリーが多すぎて
せっかくのお手軽環境であるPythonを活かしきれない
ちなみに2系と3系の変更点は些細なものだからその違いは30分もあれば理解できる
861デフォルトの名無しさん:2011/11/12(土) 03:33:36.31
>>859
1) 2.xだが、本当は割りとどうでもいい。
2)
# Python 入門
Dive Into Python (2.x)
http://www.diveintopython.net/toc/index.html
Dive Into Python 3 日本語版
http://diveintopython3-ja.rdy.jp/
# Python単体でゲーム
Pythonでゲーム作りますが何か?
http://d.hatena.ne.jp/aidiary/20080507/1269694935
Invent Your Own Computer Games with Python
http://inventwithpython.com/
# Cのプログラムに組み込む場合 (ただし、若干C++の要素あり)
Embedding Python with Boost.Python
http://members.gamedev.net/sicrane/articles/EmbeddingPythonPart1.html
862デフォルトの名無しさん:2011/11/12(土) 04:11:28.00
1) 実際に使えるプログラムを書くつもりなら 2.x しかない。

2) C# とかをやってきた人なら、言語そのものについてはいきなりリファレンスで
いいんじゃない?俺は何も知らないうちにいきなり Python の仕事を回されて、
学習書なんて読む余裕なかったが何とかなった。

3点とあるのに 2つしか質問がないとはこれいかに。
863デフォルトの名無しさん:2011/11/12(土) 05:52:11.79
これを思い出した。
>世の中には3種類の人間が居る
>数を数えられる奴と数えられない奴だ
864デフォルトの名無しさん:2011/11/12(土) 06:35:07.57
>>859
1) 自分は3.x系から勉強することを勧める。
3.xの方が、バッドノウハウが排除された、素性の良いPythonになっているので、
基礎固めには向いている。
3.xで基礎を覚えて、未対応ライブラリが必要になったら2.7に戻った方がいい。
(2.6以前は、3.x互換機能の多くが使えないので薦めない。)

それに、用途によっては、けっこう3.xだけでもできるようになった。

2)チュートリアルとリファレンスマニュアル。
Pythonの公式チュートリアルは、金払って入門本を買う奴が不思議に見えるくらい秀逸。
865デフォルトの名無しさん:2011/11/12(土) 07:20:21.92
メインのPythonは2.7.2
python3としてサブにPython 3.2.2
866デフォルトの名無しさん:2011/11/12(土) 09:03:49.14
>>860>>861>>862>>864
情報ありがとうでござる
公式チュートリアル確認しましたが、確かに充実してるでござるね
おまけに、日本語なのが助かるでござる
とりあえず、2系から始めるでござる(自分はバッドノウハウも含めて言語学ぶのが好きなので)
867デフォルトの名無しさん:2011/11/12(土) 10:41:48.20
論理学者J.S.ミルの『論理学大系』の「実験的調査の4つの方法」の章で、
実際は5つの方法を紹介している。

つまりこのような数え方は高度に論理的な手法といえる。
868デフォルトの名無しさん:2011/11/12(土) 11:50:45.36
言語を学ぶな、アルゴリズムを学べ。と、ばっちゃが言ってた。
869デフォルトの名無しさん:2011/11/12(土) 12:26:43.68
どんなアルゴリズム学べばいいの?(´・ω・`)
870デフォルトの名無しさん:2011/11/12(土) 12:32:40.44
一歩進んで前ならえ
871デフォルトの名無しさん:2011/11/12(土) 12:39:13.34
数学的帰納法のことなら確かにやっといたほうがいいと思う
872デフォルトの名無しさん:2011/11/12(土) 12:39:41.99
>>『コンピュータプログラミングの概念・技法・モデル』 (コンピュータプログラミングのがいねん・ぎほう・モデル、
CTM、CTMCP、英: Concepts, Techniques, and Models of Computer Programming) は、一般的なコンピュータ
プログラミングの概念について説明した教科書であり、ピーター・ヴァン・ロイとセイフ・ハリディにより著された。
日本語訳の訳者は羽永洋である。 この教科書の略称はCTMもしくはCTMCPである。
873デフォルトの名無しさん:2011/11/12(土) 15:04:13.23
素直に専門学校か工科系大学に行って学べばいいのに
874デフォルトの名無しさん:2011/11/12(土) 15:05:36.12
あ、教えてる専門学校あるのかは知らないけど
875デフォルトの名無しさん:2011/11/12(土) 15:16:45.99
負の掛け算でつまずいたままの俺でも出来てるんだから問題ない。
876デフォルトの名無しさん:2011/11/12(土) 15:26:26.14
>>866
まぁ2.xから始める、という判断は尊重します。
ただ、2.xチュートリアルには
「何が3.xで間もなく捨てられるor変更される機能か?」
が書いてないから、チュートリアル読み終わったら、引き続き
http://diveintopython3-ja.rdy.jp/
これを読んでおくことを勧めます。
877デフォルトの名無しさん:2011/11/12(土) 16:47:21.00
test
878デフォルトの名無しさん:2011/11/12(土) 16:48:11.86
>>875
二進数の負の掛け算のことですねわかります
879デフォルトの名無しさん:2011/11/12(土) 16:51:23.47
少なくともお前の生きてる間は 2.x は残るよ COBOL のように
880デフォルトの名無しさん:2011/11/12(土) 16:59:46.93
画像を透明度で指定して描画する関数ないでしょうか?
透過色を指定して描画する、という意味ではないです。
透明度です。
881デフォルトの名無しさん:2011/11/12(土) 17:24:28.08
>>859
ぶっちゃけ、ゲーム製作が目標なら、PythonよりC#を続けた方がいいと思う。
882デフォルトの名無しさん:2011/11/12(土) 17:24:36.22
>>880
transparent_draw('hoge.bmp', 0.5)
でいける。
883デフォルトの名無しさん:2011/11/12(土) 17:33:35.27
C# + IronPython
884デフォルトの名無しさん:2011/11/12(土) 18:02:24.61
>>859
ctypes で DirectShow / DirectX 使うプログラム書いた
意外と手軽にゲーム創り楽しめる
885デフォルトの名無しさん:2011/11/12(土) 18:04:51.28
>>882
GTK は糞
ですねわかります
886デフォルトの名無しさん:2011/11/12(土) 18:07:02.02
>>881
いやC++とLuaだな
887デフォルトの名無しさん:2011/11/12(土) 18:11:03.07
せっかくPythonのスレなんだからPythonの話しようよ
888デフォルトの名無しさん:2011/11/12(土) 18:23:47.20
つまりゲームの話はやめろと
889デフォルトの名無しさん:2011/11/12(土) 18:27:37.69
Python でゲームならいいんじゃまいか
890デフォルトの名無しさん:2011/11/12(土) 18:34:11.22
【pygame】pythonでゲーム製作【ぱいがめ】
http://hibari.2ch.net/test/read.cgi/gamedev/1126605105/
891デフォルトの名無しさん:2011/11/12(土) 18:39:39.49
ordってなんですか?
892デフォルトの名無しさん:2011/11/12(土) 18:40:55.26
>>891
車椅子から前につんのめった人
893デフォルトの名無しさん:2011/11/12(土) 18:42:28.76
ゲームとかはまずpythonでなるべく疎結合な設計で作っておいて
ctypesとかswigとかBoostPythonとかCythonで高速化の必要な部分だけ
C/C++に置き換えるのがアリです
圧倒的生産性と上々のパフォーマンスが期待できるっす
894デフォルトの名無しさん:2011/11/12(土) 18:45:40.51
>>892
マジレスたのむ
ぐぐれとかはなしで
895デフォルトの名無しさん:2011/11/12(土) 18:47:44.39
>>894
ヤフレ
896892:2011/11/12(土) 18:49:53.36
>>894
ord('A') => 65(文字をコード番号に変換する)
ord(u"あ") => 12354

chr(65) => 'A'(コード番号を文字に変換する)
897892:2011/11/12(土) 18:53:05.90
('o')
('A')
(^ν^)
898デフォルトの名無しさん:2011/11/12(土) 18:55:07.81
>>890
へー
Pyglet が流行ってるのか
初めてこのスレが役にたった
899デフォルトの名無しさん:2011/11/12(土) 18:56:41.08
>>896
uchr(12354)=> u'あ'(コード番号を文字に変換する)
900デフォルトの名無しさん:2011/11/12(土) 18:58:13.47
間違えた orz
unichr(12354)=> u'あ'(コード番号を文字に変換する)
901デフォルトの名無しさん:2011/11/12(土) 19:02:05.56
つまり、ordとunichrは同じものってこと?
902デフォルトの名無しさん:2011/11/12(土) 19:03:04.70
あ、違うchrとunichrって何が違うの
903デフォルトの名無しさん:2011/11/12(土) 19:09:46.54
ord(12354) ってやってみればわかる
904デフォルトの名無しさん:2011/11/12(土) 19:10:23.27
間違えた orz
chr(12354) ってやってみればわかる
905デフォルトの名無しさん:2011/11/12(土) 19:11:43.89
投稿するまえに深呼吸しなさい。
906デフォルトの名無しさん:2011/11/12(土) 19:12:14.31
あと
type(chr(41))
type(unichr(12354))
907デフォルトの名無しさん:2011/11/12(土) 19:12:40.09
おまいら間違い過ぎ()
908デフォルトの名無しさん:2011/11/12(土) 19:14:11.17
ググれ、というかリファレンス読め。
909デフォルトの名無しさん:2011/11/12(土) 19:16:10.66
ヨッシャ
910デフォルトの名無しさん:2011/11/12(土) 19:24:50.51
連投支援
911デフォルトの名無しさん:2011/11/12(土) 19:28:36.57
try:
( 'A `)
(⊃⌒*⌒⊂).insert(u"角電池")
/__ノωヽ__)
except:
912デフォルトの名無しさん:2011/11/12(土) 19:41:18.36
富士山をかかえこむダイダラボッチのAAを貼るのはやめろ
913デフォルトの名無しさん:2011/11/12(土) 19:59:20.87
AAなんか一括あぼーんしとけ
914デフォルトの名無しさん:2011/11/12(土) 20:16:15.20
pythonの毒にやられた
915デフォルトの名無しさん:2011/11/12(土) 20:27:24.24
まったく参考にならないとして定評のあるPythonスレ。今日も平常運行。
916デフォルトの名無しさん:2011/11/12(土) 20:30:47.31
モンティ・パイソン来日
917デフォルトの名無しさん:2011/11/12(土) 22:01:41.02
_init_って何のために使うの?
918デフォルトの名無しさん:2011/11/12(土) 22:05:42.31
__init__のこと?
初期値の設定や各種の初期化
また引数として受け取った値を保存したりにも使う
919デフォルトの名無しさん:2011/11/12(土) 22:20:47.53
コンストラクタと言ってる人もいるしコンストラクタじゃないって言ってる人もいる
920デフォルトの名無しさん:2011/11/12(土) 22:56:15.87
俺は後者だが、用途として他言語の自作コンストラクタとかなりの部分で被るのは間違いないと思う
921デフォルトの名無しさん:2011/11/12(土) 22:59:24.51
昨日からはじめてのPython読んで勉強してるが他の言語と言葉がずいぶん違うから中々頭に入ってこない
まだ5章…
922デフォルトの名無しさん:2011/11/12(土) 23:01:26.41
その「他の言語」って何のこと?
色んな言語やってると、割と普通の表現が多いように思えるよ
923デフォルトの名無しさん:2011/11/12(土) 23:07:42.74
len(str)だけは意表を突かれた単純でよく使う機能なのに全然見つけられなかった
str.len()とかstr.length()とかを探してた

あとstr以外にunicodeっていうクラスがあるのも暫く気付かなかったわ
924デフォルトの名無しさん:2011/11/12(土) 23:15:09.50
初めてのPythonの索引ざっと見てみたけど
タプル、スライス、辞書、リスト内包
この辺は人によってはなんぞそれって思うかもしれない
925デフォルトの名無しさん:2011/11/12(土) 23:36:47.92
>>923
>あとstr以外にunicodeっていうクラスがあるのも暫く気付かなかったわ

勝手に相互変換するからな
毛唐のドキュメントとかソースばかり読んでると確かに気付かない
926デフォルトの名無しさん:2011/11/13(日) 00:10:50.62
str.__len__()
927デフォルトの名無しさん:2011/11/13(日) 01:44:38.23
>>924
う〜ん、どれも他の言語で聞く表現だわw
928デフォルトの名無しさん:2011/11/13(日) 02:22:35.70
他の言語と言葉が違うっていうと、「リスト」も微妙だと思う。
929デフォルトの名無しさん:2011/11/13(日) 02:24:05.21
リストは割と普通じゃね?
リストの内部構造だって言語によってまちまちだし
930デフォルトの名無しさん:2011/11/13(日) 02:27:19.91
リストというより配列だよね
メモリ上はどうなってんのか知らんけど
931デフォルトの名無しさん:2011/11/13(日) 02:34:05.41
メモリ上は確か配列だったような
932デフォルトの名無しさん:2011/11/13(日) 02:43:48.59
dequeでしょ、さすがに。。。
933デフォルトの名無しさん:2011/11/13(日) 02:56:33.28
>>> a = [1, 2, 5]
>>> a[2:2] = [3, 4]
>>> a
[1, 2, 3, 4, 5]

こうやってみると配列というよりリストだよな
934デフォルトの名無しさん:2011/11/13(日) 02:57:21.36
これだと
>>> a = [1, 2, 5]
>>> a[2] = [3, 4]
>>> a
[1, 2, [3, 4]]
こうなるのか
935デフォルトの名無しさん:2011/11/13(日) 09:04:36.66
listをクリアするのは lst[:] = [] でOK?
dict.clear()はあるのにlist.clear()はない不思議
936デフォルトの名無しさん:2011/11/13(日) 09:08:27.09
lst = []でいいじゃないか、と思ったけど
だったらd.clearでなくd = {}でもいい気がする
937デフォルトの名無しさん:2011/11/13(日) 09:44:04.46
>>936
意味が違う。
既存のリストを空にするか、新しい空リストに参照を付け替えるかの違い。
同じリストを参照する変数が別にあった場合、前者はそっちも空になるが、
後者は変わらない。
938デフォルトの名無しさん:2011/11/13(日) 10:01:57.17
>>937
なるほど、他の変数に参照されてる場合にまで頭が回ってなかった
どうもありがとう
939デフォルトの名無しさん:2011/11/13(日) 14:01:16.83
逆引きサンプル集サイトってありませんか?
「○○したい」→「こう書く」みたいな
940デフォルトの名無しさん:2011/11/13(日) 14:31:46.06
941デフォルトの名無しさん:2011/11/13(日) 14:54:44.14
>>940
これいいですね
ここから勉強していきたいと思います
とりあえずPython3.2.2を入れてきます
942デフォルトの名無しさん:2011/11/13(日) 17:57:17.67
>>937
>>> a = [1,2,3]
>>> b = a
>>> a[:] = []
>>> b
[]

>>> a = [1,2,3]
>>> b = a
>>> a = []
>>> b
[1, 2, 3]

よくわかりました
943デフォルトの名無しさん:2011/11/13(日) 18:05:44.57
del の方が少しだけ早いぞう

>>> timeit(setup='a=range(1000)', number=3000000, stmt='a[:]=[]')
0.2750417562387426

>>> timeit(setup='a=range(1000)', number=3000000, stmt='del a[:]')
0.18659495853577823
944デフォルトの名無しさん:2011/11/13(日) 18:14:05.76
timeitなんてコマンドがあるんだね
勉強になった
945デフォルトの名無しさん:2011/11/13(日) 19:23:09.38
質問です。
関数に定義されているパラメタの数を取得する方法を教えてください
946デフォルトの名無しさん:2011/11/13(日) 19:29:26.54
可変長のときはどうすんの
947デフォルトの名無しさん:2011/11/13(日) 19:31:55.74
>>946
とりあえず def 文に定義されている情報が知りたいです
948デフォルトの名無しさん:2011/11/13(日) 19:38:50.57
引き続きググってたら、inspect でできるらしいことを知った。
数を取得したいなら、下記方法でいいのかな?
len(inspect.getargspec(xxx).args)
949デフォルトの名無しさん:2011/11/13(日) 19:43:29.59
いいのかな?
950デフォルトの名無しさん:2011/11/13(日) 19:45:17.15
使ってみた。
>>> import inspect
>>> def hoge(a, b, c):
... return a + b + c
...
>>> hoge(1, 2, 3)
6
>>> inspect.getargspec(hoge)
ArgSpec(args=['a', 'b', 'c'], varargs=None, keywords=None, defaults=None)
951デフォルトの名無しさん:2011/11/13(日) 20:00:50.32
def hoge(a, b, c, *d, **e):
のときもやってみて
952デフォルトの名無しさん:2011/11/13(日) 20:04:11.74
>>> def hoge(a, b=1, c=None, *d, **e):
... return 'hoge'
...
>>> inspect.getargspec(hoge)
(['a', 'b', 'c'], 'd', 'e', (1, None))

>>> def hoge(a=99, b=1, c=None, *d, **e):
... return 'hoge'
...
>>> inspect.getargspec(hoge)
(['a', 'b', 'c'], 'd', 'e', (99, 1, None))

default は右詰なんだぬ
953デフォルトの名無しさん:2011/11/13(日) 20:06:26.99
helpでドキュメンテーション文字列見ないとどうせ使えないでしょ
954デフォルトの名無しさん:2011/11/13(日) 20:26:29.49
ipython使ってるときは
print(hoge.__doc__)
で使い方調べてるわ
955デフォルトの名無しさん:2011/11/13(日) 20:37:09.67
help(hoge)でいいじゃん
956デフォルトの名無しさん:2011/11/13(日) 21:00:07.85
>>954
ipythonなら hoge? で help(hoge) の表示が出るよ
957デフォルトの名無しさん:2011/11/13(日) 21:03:49.09
知らなかったよー
サンクス
958デフォルトの名無しさん:2011/11/13(日) 21:15:00.96
Python 2.7(Windows)

>>> help(help)
Help on _Helper in module site object:

class _Helper(__builtin__.object)
| Define the builtin 'help'.
| This is a wrapper around pydoc.help (with a twist).
|
| Methods defined here:
|
| __call__(self, *args, **kwds)
|
| __repr__(self)
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
959デフォルトの名無しさん:2011/11/13(日) 21:50:37.54
先輩方に質問させてください
RubyではなくなぜPythonを選んだのですか?
960デフォルトの名無しさん:2011/11/13(日) 21:54:01.87
関数がオブジェクトだったから
961デフォルトの名無しさん:2011/11/13(日) 21:54:48.07
Ruby の community が so strange だったから
962デフォルトの名無しさん:2011/11/13(日) 21:56:36.61
006Pが気に入ったから
963デフォルトの名無しさん:2011/11/13(日) 21:58:02.01
rubyがWindowsに冷たかったから
964デフォルトの名無しさん:2011/11/13(日) 22:00:45.14
GoogleでRubyが使えなかったから。
965デフォルトの名無しさん:2011/11/13(日) 22:01:10.95
元々Ruby(とRailsも少し)使ってたんだけどGAEがきっかけでPythonもやってみようと思った
GAEは糞だったんでさっさと辞めたけどPythonだけは便利なのでずっと使ってる
966デフォルトの名無しさん:2011/11/13(日) 22:04:15.80
Pythonの改行で{}って仕様ってどうなの
ネットにある他人のソースコピーしてきたときとかに
全部左寄せになったりしてウザいんだけど
967デフォルトの名無しさん:2011/11/13(日) 22:05:01.34
改行じゃないやインデント
968デフォルトの名無しさん:2011/11/13(日) 22:05:07.45
アンチスレに親切な人が居たのでそれ以来 Python ファンになった。
969デフォルトの名無しさん:2011/11/13(日) 22:07:01.64
>>966
日本語でもう一度おながい
970デフォルトの名無しさん:2011/11/13(日) 22:08:06.94
>>966
たとえばどのサイト?
971デフォルトの名無しさん:2011/11/13(日) 22:08:38.67
windowsのpyscripterでの質問です。

pygameでウィンドウを表示すると、ウィンドウが応答なしになってしまい
強制終了しかできなくなります。

外部実行だと上手くいくんですが・・・。

リモートとの相性でしょうか?

解決法をご存知の方!

教えてくださいorz
972デフォルトの名無しさん:2011/11/13(日) 22:11:22.34
973デフォルトの名無しさん:2011/11/13(日) 22:15:21.96
974デフォルトの名無しさん:2011/11/13(日) 22:21:50.84
馬鹿には無理
975デフォルトの名無しさん:2011/11/13(日) 22:29:03.57
>>971
のレスを見て、
http://www.python.jp/Zope/workshop/200706/Pygame
ここのを試そうと思って、
久しぶりに PyScripter 起動したら、
pygame も糞もなくいきなり
ウィンドウが応答なしになってしまい
強制終了しかできなくなります。

解決法をご存知の方!

教えてくださいorz
976デフォルトの名無しさん:2011/11/13(日) 22:32:52.51
pyscripterは糞
977デフォルトの名無しさん:2011/11/13(日) 23:11:33.94
馬鹿には無理
978デフォルトの名無しさん:2011/11/13(日) 23:25:18.10
わかるひとだけレスしてください
979デフォルトの名無しさん:2011/11/13(日) 23:37:28.36
>>971
うちのpyscripterだとpygameのウィンドウが出て
×で閉じるところまでは動くが閉じた直後に
pyscripterがアプリケーションエラーで落ちる
強制終了しなくても終了されてる
980デフォルトの名無しさん:2011/11/13(日) 23:56:19.51
梅益代
981デフォルトの名無しさん:2011/11/14(月) 01:02:24.97
>>975
うちでもこの間起動しただけで応答なしになったけど
しばらくそのまま放置してたら動き出したよ。

起動時に更新チェック入るから、その辺の不具合かなーと思っている。
982デフォルトの名無しさん:2011/11/14(月) 03:30:19.64
983デフォルトの名無しさん:2011/11/14(月) 05:15:19.48
pygletインストールしてみたけど
ただのサンプル実行してもなぜかエラーが出る
pyglet.gl.ContextException: Unable to share contexts
なんで?
984デフォルトの名無しさん:2011/11/14(月) 06:42:01.35
馬鹿には無理
985デフォルトの名無しさん:2011/11/14(月) 06:49:08.65
>>984
自己紹介乙
986デフォルトの名無しさん:2011/11/14(月) 07:05:19.28
>>983
FAQ嫁
987デフォルトの名無しさん:2011/11/14(月) 11:06:48.79
>>983
set PYGLET_SHADOW_WINDOW=0
988デフォルトの名無しさん:2011/11/14(月) 11:22:40.91
できました
ありがとうございました
989デフォルトの名無しさん:2011/11/14(月) 11:32:25.86
自分でクラス等を作ったとき、__doc__に書いておけば、
のちに、そのクラスをテキストエディタで参照するときに、
ガイド表示させることができるのか。このスレ役に立つでござるお
990デフォルトの名無しさん:2011/11/14(月) 11:51:29.97
PyScripterは不評みたいだけど
みんなエディタとかIDEとか何つかってんの?
991デフォルトの名無しさん:2011/11/14(月) 12:30:56.24
Vim on tmux
992デフォルトの名無しさん:2011/11/14(月) 12:37:49.11
993デフォルトの名無しさん:2011/11/14(月) 12:52:53.20
>>990
gedit
994デフォルトの名無しさん:2011/11/14(月) 13:04:39.73
GTKは糞
995デフォルトの名無しさん:2011/11/14(月) 13:22:14.42
馬鹿には無理
996デフォルトの名無しさん:2011/11/14(月) 13:23:17.65
>>995
自己紹介乙
997デフォルトの名無しさん:2011/11/14(月) 13:23:39.82
998デフォルトの名無しさん:2011/11/14(月) 13:23:55.03
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
999デフォルトの名無しさん:2011/11/14(月) 13:24:35.22
1000デフォルトの名無しさん:2011/11/14(月) 13:25:02.38
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。