くだすれPython(超初心者用) その21
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2014/01/02(木) 12:52:08.79もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。
エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで
前スレ
くだすれPython(超初心者用) その20
http://toro.2ch.net/test/read.cgi/tech/1387082467/
関連スレ
Pythonのお勉強 Part49
http://toro.2ch.net/test/read.cgi/tech/1387528488/
◆関連リンク
Python の Home Page
ttp://www.python.org/
◆長いコードはこういうところにはってください
ttp://ideone.com/
ttp://codepad.org/
ttp://pastebin.com/
http://dpaste.com/
◆まとめwiki
ttp://python.rdy.jp/
0002デフォルトの名無しさん
2014/01/02(木) 12:56:27.58|_::;; ~"'ヽ
| //^''ヽ,,)
| i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
_,,,......,,__
/_~ ,,...:::_::;; ~"'ヽ
(,, '"ヾヽ i|i //^''ヽ,,)
^ :'⌒i i⌒"
|( ´∀`) < きのこ のこーのこ げんきのこ ♪
|(ノ |つ
| |
⊂ _ ノ
""U
_,,,......,,__
/_~ ,,...:::_::;; ~"'ヽ
(,, '"ヾヽ i|i //^''ヽ,,)
^ :'⌒i i⌒"
(´∀` )| < エリンギ まいたけ ブナシメジ ♪
⊂| (ノ |
| |
ヽ _ ⊃
.U""
|
| ミ
| ミ サッ!
| ミ
|
0003デフォルトの名無しさん
2014/01/02(木) 12:57:08.78│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0004デフォルトの名無しさん
2014/01/02(木) 12:58:00.03http://python.rdy.jp/wiki.cgi?page=ThreadArchive
http://python.rdy.jp/wiki.cgi?page=%B4%D8%CF%A2%BF%DE%BD%F1
ここも古いのでさっさと直せ
0005デフォルトの名無しさん
2014/01/02(木) 13:02:30.830006デフォルトの名無しさん
2014/01/02(木) 13:03:22.250007デフォルトの名無しさん
2014/01/02(木) 13:14:54.45>>975
>>973より引用
http://interactivepython.org/courselib/static/pythonds/BasicDS/stacks.html#what-is-a-stack
この一文を訳してみてね。簡単なんでしょ?
> The base of the stack is significant since items stored in the stack that are closer to the base represent those that have been in the stack the longest.
0008デフォルトの名無しさん
2014/01/02(木) 14:40:22.27単語と接続詞が多すぎて全く意味不明だな
スタックのことだろうというのはIT畑の人なら雰囲気でわかるが…
もう少し短くスマートな文を書こうという気はないのだろうか英米人は
0009デフォルトの名無しさん
2014/01/02(木) 16:06:33.560010!omikuji!dama
2014/01/02(木) 16:09:43.880011デフォルトの名無しさん
2014/01/02(木) 16:39:20.240012デフォルトの名無しさん
2014/01/02(木) 17:18:30.56Pythonがあまりにも完璧・使いやすすぎて
語る必要もないということなのだろうな
良きことだ
0013デフォルトの名無しさん
2014/01/02(木) 17:48:14.14今居る関数の、関数オブジェクトを表している特殊変数ありませんか?
下記のような時 __self__ みたいな特殊変数があると
this = hoge_hoge_fuga_fuga しなくて済むのだけど
def hoge_hoge_fuga_fuga():
this = hoge_hoge_fuga_fuga
if 'x' not in this.__dict__:
this.__dict__['x'] = 100
this.x += 1
print(this.x)
hoge_hoge_fuga_fuga()
hoge_hoge_fuga_fuga()
0014デフォルトの名無しさん
2014/01/02(木) 18:47:32.96特殊変数はない。スタックフレームから参照する方法はあるけど、いろいろな状況での利用を考えると面倒なのでお勧めしない。
目的によって異なるけど、考えられる代案はこんなとこ
関数定義時に関数オブジェクトを参照し属性を設定する -> デコレータが使える
値を持つ、呼び出し可能なオブジェクトを作りたいなら __call__ を調べてみよう
クロージャ的な用法(関数内にデータを内包したい)なら、ジェネレータにするといい。@see also itertools.count
ideone.com/mFBFqg
0015デフォルトの名無しさん
2014/01/02(木) 19:06:36.30.pyファイルを秀丸などでutf-8nで保存しても次開くとSJISになってしまっているのでそれが原因でしょうか?
解決方法を教えてください。。
# -*- coding: utf-8 -*
import urllib2
from BeautifulSoup import BeautifulSoup
url = "YahooTOPのURL"
soup = BeautifulSoup(urllib2.urlopen(url).read(), fromEncoding='utf-8')
print soup
0016デフォルトの名無しさん
2014/01/02(木) 19:09:39.12ありがと。無いなら諦めるw
使用目的は、単に関数内スタティック変数として使うため。
入力と結果が1対1で対応してる処理が重たい関数で、
結果を辞書にキャッシュさせるのにスタティック変数は良く使うので
0017デフォルトの名無しさん
2014/01/02(木) 19:44:33.61そのurlって実在するの?
日本語を含むurlなんて聞いたことがないんだが
0018デフォルトの名無しさん
2014/01/02(木) 19:49:04.57文字列前にuをつけてみて
str型ではなくunicode型じゃないとうまくいかない
>>16
横からだけど、そういうことならグローバル直下に辞書をおくといいよ
python3だったらfunctools.lru_cacheをつかうのもいいよ
0019デフォルトの名無しさん
2014/01/02(木) 20:31:40.15>.pyファイルを秀丸などでutf-8nで保存しても次開くとSJISになってしまっているのでそれが原因でしょうか?
ファイルに日本語がなくてASCIIだけだったら、エディタの文字コード判別がデフォルトのSJISとみなしているんじゃないかな。ソースに日本語のコメント入れて保存してみそ。
それでこれは問題の文字化けとは多分関係ない。
yahooトップページって文字コードutf-8だっけ?その辺が怪しそうな気がする
0020デフォルトの名無しさん
2014/01/02(木) 20:37:45.39URL規制で書けなかったので日本語にしてました
>>18
soup = unicode(soup.prettify(), soup.originalEncoding)
すみません、色々調べてこれ入れたらできました!
>>19
あーSJISのままなのはそういう意味だったんですね。。スッキリしました。yahooはutf-8でした!
皆さんありがとうございました
0021デフォルトの名無しさん
2014/01/02(木) 20:39:20.74print soup.decode('utf-8')
こうかな?
0022デフォルトの名無しさん
2014/01/02(木) 20:46:04.09それだとエラーでました。
TypeError: 'NoneType' object is not callable
0023デフォルトの名無しさん
2014/01/02(木) 23:22:59.34そういった用途なら functools.lru_cacheに+1
スタティック変数について、他の代案も紹介しておくと、
グローバルの代わりにデフォルト引数に辞書を入れて、スタティックな領域として使う方法もある
注意点として、Pythonではデフォルト引数の評価タイミングが関数定義時なので、
他の言語からの人がコードを読んだ時、解りにくくなるという懸念はあるけど、
キャッシュに使う辞書を引数に与えられるので、関数の単体テストはしやすくなります
0024デフォルトの名無しさん
2014/01/03(金) 02:16:58.200026デフォルトの名無しさん
2014/01/03(金) 02:30:36.06int(b'2966'.decode('utf-8'))
かなあ?
0028デフォルトの名無しさん
2014/01/03(金) 02:34:54.920030デフォルトの名無しさん
2014/01/03(金) 07:52:37.85インストールしたモジュール使えなくなったんですけど
これは参照している場所が違うからでしょうか
OSはMACです
0031デフォルトの名無しさん
2014/01/03(金) 08:44:13.17ありがと
標準ライブラリにキャッシュ機能を提供してくれるものがあったとはPythonすげー
デフォルト引数に辞書の方法は、簡単で便利ですね
0032デフォルトの名無しさん
2014/01/03(金) 16:13:53.83軽量ウェブアプリフレームワーク Flask の解説で、
以下のサンプルコードは、ルートパスにアクセスすると "Hello World!" を表示するだけのアプリケーション
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
↑こんなのがあります。この appオブジェクトはどうして hello() の存在を認識できているんでしょうか? どうか解説をお願いします。
@〜 は関数アノテーション?、これもよく分かっていません。
0033デフォルトの名無しさん
2014/01/03(金) 16:44:09.72ttp://docs.python.jp/3.3/reference/compound_stmts.html#function
ttp://docs.python.jp/3.3/glossary.html#term-decorator
003432
2014/01/03(金) 18:54:01.59def __init__(self):
self.dic = {}
def route(self,key):
def proc(fun):
self.dic[key] = fun
return proc
myapp = App()
@myapp.route("/")
def foo():
return "Welcome!"
@myapp.route("/menu")
def foo():
return "Sorry, Japanese Only!"
myapp.dic["/"]()
=> "Welcome!"
myapp.dic["/menu"]()
=> "Sorry, Japanese Only!"
ありがとうございます。ほぼ理解できました。
0035デフォルトの名無しさん
2014/01/04(土) 00:01:18.740036デフォルトの名無しさん
2014/01/04(土) 23:07:58.700037デフォルトの名無しさん
2014/01/07(火) 16:31:27.57最近みた日本語の悪文だとこんなのがある
http://ja.wikipedia.org/wiki/%E4%B8%B8%E4%BA%95
0038デフォルトの名無しさん
2014/01/08(水) 00:08:29.85読解にメモリ馬鹿食いする文章だな
0039デフォルトの名無しさん
2014/01/08(水) 13:40:33.62self.board = [[0]*num]*num
for i in board:
for j in i:
j = 1
こんな風にやっても案の定書き換えられてないんですけど!
リストを書き換えるスマートな方法を教えて欲しいんですけど!
盤面のオブジェクトを作って色んな書き換えるメソッドを呼び出して何度も書き換える予定なんですけど!
とりあえずライフゲーム作るんですけど!
0040デフォルトの名無しさん
2014/01/08(水) 15:25:06.10こういうのとか
>>> import test
>>> f = test.Foo(3)
>>> f.update_list(3)
>>> print(f.get_list())
[[3, 3, 3], [3, 3, 3], [3, 3, 3]]
0042デフォルトの名無しさん
2014/01/08(水) 17:25:57.03print(a)
a[1][1] = 1
print(a)
の実行結果が
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]
になります
期待してる結果は
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]
です
これは一体何が起こっているのでしょうか
助けてください
Version : 3.3.3
Version tuple: ('3', '3', '3')
Compiler : MSC v.1600 32 bit (Intel)
Build : ('v3.3.3:c3896275c0f6', 'Nov 18 2013 21:18:40')
0043デフォルトの名無しさん
2014/01/08(水) 17:35:05.69python2はリスト型
>>> type(map(add, a))
<type 'list'>
python3はmap型
>>> type(map(add, a))
<class 'map'>
map型のイテレータは一度処理終わったら、もどってくれないから注意
>>> b = map(add, a)
>>> list(b)
[2, 3, 4]
>>> list(b)
[]
0044デフォルトの名無しさん
2014/01/08(水) 17:40:29.16参照だから
>>> id(a[0][1])
139713178044032
>>> id(a[1][1])
139713178044032
>>> id(a[2][1])
139713178044032
[0]*3
0045デフォルトの名無しさん
2014/01/08(水) 17:42:33.420046デフォルトの名無しさん
2014/01/08(水) 17:57:47.61あなたの希望は以下で満たせるはず。
後は自分で頑張って勉強して、それでも分からなければまた聞きに来て。
>>> a = [[0] * 3] * 3
>>> print(a)
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> for x in a:
... print("id(x) =", id(x))
...
id(x) = 140290763245184
id(x) = 140290763245184
id(x) = 140290763245184
>>> a[1][1] = 1
>>> print(a)
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]
>>> a = [None] * 3
>>> for i, x in enumerate(a):
... a[i] = [0] * 3
...
>>> print(a)
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> for x in a:
... print("id(x) =", id(x))
...
id(x) = 140290763245544
id(x) = 140290763244464
id(x) = 140290763245184
>>> a[0][0] = 1
>>> a[1][1] = 1
>>> a[2][2] = 1
>>> print(a)
[[1, 0, 0], [0, 1, 0], [0, 0, 1]]
004842
2014/01/08(水) 18:17:03.24完全に嵌ってました
0049デフォルトの名無しさん
2014/01/08(水) 18:24:27.06Python的にはノート(2)より
ttp://docs.python.jp/3.3/library/stdtypes.html#common-sequence-operations
[[0] * 3 for i in range(3)]
ミュータブルな要素のみ内包表記に置き換える感じで
0050デフォルトの名無しさん
2014/01/08(水) 18:25:10.19>>> a = [[0 for row in range(3)] for row in range(3)]
>>> a[1][1]=1
>>> a
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]
0051デフォルトの名無しさん
2014/01/09(木) 01:12:22.59ソースから入れないと入らないのかな。./Tools/demo/life.py
替わりにこんなの見つけた
# タートルのデモ
> python3 -mturtledemo
# tkのデモをpythonから実行
from tkinter import Tk
tk = Tk()
tk.eval("source c:/Python33/tcl/tk8.5/demos/widget")
tk.mainloop()
0052デフォルトの名無しさん
2014/01/11(土) 21:56:49.85>>> [(i, x) for i, x in enumerate([x for x in a if x >= 3], start=1)]
[(1, 3), (2, 4), (3, 5)]
こういう風に、リストから条件を満たす要素だけ抜き出して
連番を付与してタプルのリストを作る目的がある
しかし、入力がリストではなく以下のようなテキストファイルの場合
1
2
3
4
5
0
enumerateの行にファイル読み込み処理をぶち込んでコードを短い
ままで済ますことは可能だろうか?
調べてみたのだが、ワンライナーでファイル処理を行う例が見つからなかった
0053デフォルトの名無しさん
2014/01/11(土) 22:15:37.35openも一緒にやりたいってこと?
0054デフォルトの名無しさん
2014/01/11(土) 22:29:12.77自分も初心者だけど
f = open('data.txt')
[(i, x) for i, x in enumerate([x for x in map(lambda s:int(s.rstrip('\r\n')), f) if x >= 3], start=1)]
0055デフォルトの名無しさん
2014/01/11(土) 22:29:54.85そう
スクリプト言語の用途として
テキストフィルタ的なものはよく出会うので
ファイル処理を短く済ます定番句があると
楽だなあと思う次第
0056デフォルトの名無しさん
2014/01/11(土) 22:39:24.75おおっと書いたとたんにレスが
サンクス
そのopenも一行にまとめてしまえないだろうかという話
0057デフォルトの名無しさん
2014/01/11(土) 22:41:17.49[(i, x) for i, x in enumerate([x for x in map(lambda s:int(s.rstrip('\r\n')), open('data.txt')) if x >= 3], start=1)]
0058デフォルトの名無しさん
2014/01/11(土) 22:43:51.34with open('data.txt') as f: l = []
で一行にはなるけど,短くはむりぽ
0059デフォルトの名無しさん
2014/01/11(土) 22:51:26.70カッコだらけなんだけど、インデントで書けないものか....
0060デフォルトの名無しさん
2014/01/11(土) 22:53:46.581行で書きたいのか複数行で書きたいのどっちなんだよw
0061デフォルトの名無しさん
2014/01/11(土) 23:15:42.68あんまりはやってないようなのはなぜ?
ここのサイトが超わかりやすい!
http://www.shido.info/py/tkinter1.html
0062デフォルトの名無しさん
2014/01/11(土) 23:21:44.22list['abc','abcd','bcd','bbt','yyf','zat']を
list['abcd','bbt','yyf','zat']にしたい
for s in range(len(list)):
x = list.pop()
for k in list:
if not x in k:
list.append(x)
これだとうまくいきませんでした
0063デフォルトの名無しさん
2014/01/11(土) 23:29:01.42リストの中の要素が重複してないならset使ったほうが楽かも
l = ['abc','abcd','bcd','bbt','yyf','zat']
k = ['abc','bcd']
egg = list(set(l) - set(k))
0064デフォルトの名無しさん
2014/01/11(土) 23:30:05.700065デフォルトの名無しさん
2014/01/12(日) 00:15:57.50ツールってあるの?
0066デフォルトの名無しさん
2014/01/12(日) 00:22:45.660067デフォルトの名無しさん
2014/01/12(日) 00:25:00.510068デフォルトの名無しさん
2014/01/12(日) 02:30:10.24o SCons
0069デフォルトの名無しさん
2014/01/12(日) 05:45:41.99よくあるファイル処理のスクリプトはfileinputモジュール使う
sedのようなinplaceなファイルの書き換えも支援してくれる。
ワンライナ自体python向きではないけど、一応短くしてみると
ファイルから数列を読み込むのは、
intは前後の空白文字取り除いて変換してくれるので map(int, open("data.txt")) で済むよ。
[(i,x) for i,x in enumerate(...)] は list(enumerate(...)) 用途によってはlist()も不要。
0070デフォルトの名無しさん
2014/01/12(日) 09:36:05.290071デフォルトの名無しさん
2014/01/12(日) 09:42:19.69ゼロです
0072デフォルトの名無しさん
2014/01/12(日) 09:47:40.52http://ja.wikipedia.org/wiki/Pythonを使っている製品あるいはソフトウェアの一覧
一部 Python で書かれてる的なのも含まれてるので注意
0073デフォルトの名無しさん
2014/01/12(日) 09:53:04.05http://sourceforge.jp/softwaremap/trove_list.php?form_cat=178
(プログラミング言語にPythonを使用しているプロジェクトの一覧)
0074デフォルトの名無しさん
2014/01/12(日) 10:27:14.21https://github.com/search?l=Python&q=stars%3A%22%3E+1000%22&type=Repositories
0075デフォルトの名無しさん
2014/01/12(日) 13:26:16.84https://code.google.com/hosting/search?q=label%3aPython
0076デフォルトの名無しさん
2014/01/12(日) 16:04:00.58―カーニハン―
0077デフォルトの名無しさん
2014/01/12(日) 16:27:44.37pythontutor.com/visualize.html
ここにコード書いてステップ実行すると、
1ステップ毎に変数やリストのデータがどのように変化するか表示してくれるので解りやすいよ。
同じリスト内の重複を取り除くのか、2つのリストから差分を除くのか
題意が読み取れなかったけど。リストで順序を保つなら collections.OrderedDict.fromkeys(xs).keys()
0078デフォルトの名無しさん
2014/01/12(日) 17:40:57.01import __builtin__
list = ['abc','abcd','bcd','bbt','yyf','zat']
gomi = []
for i in range(len(list)):
for j in range(len(list)):
if i != j:
if list[i] in list[j]:
gomi.append(list[i])
break
print __builtin__.list(set(list) - set(gomi))
0079デフォルトの名無しさん
2014/01/12(日) 18:18:34.03L = ['abc','abcd','bcd','bbt','yyf','zat']
k = ['abc','bcd']
for i in range(len(L)-1, -1, -1):
if L[i] in k:
del L[i]
print(L)
0080デフォルトの名無しさん
2014/01/12(日) 18:21:28.98src = ["abc", "abcd", "bcd", "bbt", "yyf", "zat"]
dst = [x for x in src if all(not x in y for y in src if x != y)]
print(dst)
0081デフォルトの名無しさん
2014/01/12(日) 18:22:18.95ストーリー by headless 2014年01月12日 12時55分
http://developers.slashdot.jp/story/14/01/11/2115245/
0082デフォルトの名無しさん
2014/01/12(日) 18:25:49.84dst = [x for x in src if not any(x in y for y in src if x != y)]
0083デフォルトの名無しさん
2014/01/12(日) 18:33:34.51>ユーザーがアップグレードを自由に行えるとは限らず、新しいバージョンで削除されたAPIを必要としていることもあるし、
>新しいバージョンで動作するようにコードを修正してテストするのは手間がかかる。
これ何の冗談だよ
クソいラピッドリリースをFireFoxに導入しくさってくださりやがりましたMozillaお前がその発言すんのかよ
コブラに噛まれて死ね
5回死ね
0084デフォルトの名無しさん
2014/01/12(日) 18:36:56.810085デフォルトの名無しさん
2014/01/12(日) 19:15:41.16src = ['abc','abcd','abcd','abcd','bcd','bbt','yyf','zat']
↑こんな風に重複したものがあると残るからインデックスで比較するのがよさげ
dst = [x for i,x in enumerate(src) if not any(x in y for j,y in enumerate(src) if i!=j)]
多重ループ出来るの今日初めて知ったthx
0086デフォルトの名無しさん
2014/01/12(日) 19:19:47.69こっちでやろうや
http://toro.2ch.net/test/read.cgi/tech/1387528488/
>>62への回答の邪魔になりそうだし
008785
2014/01/12(日) 19:25:20.620088デフォルトの名無しさん
2014/01/12(日) 19:45:10.900089デフォルトの名無しさん
2014/01/12(日) 19:46:42.42関数型?っぽく
0090デフォルトの名無しさん
2014/01/12(日) 19:50:50.66自分のプログラミングレベルだと、その内包表記の詰め込み具合はきつい
0091デフォルトの名無しさん
2014/01/12(日) 19:52:43.69リスト要素の重複は、予め取り除いてから篩いに掛けた方がいいかな。
ループの回数も抑えられるし。
009282
2014/01/12(日) 20:44:55.26dst = []
for x in src:
for y in src:
if x in y and x != y:
break
else:
dst.append(x)
ここのelseは、ifではなく、内側のforに対応するelse。breakで抜けなかった時に実行されます。
結果から重複を取り除く場合は、for y の前に if x in dst: continue で対応。
0093デフォルトの名無しさん
2014/01/12(日) 22:30:52.10os.path.isfileとos.path.existsがうまく行きません
存在しているのにFalseになったり
存在しないのにTrueになったりします
なにか勘違いしているところありますでしょうか?
python33です
009493
2014/01/12(日) 22:41:32.79なんでもなかったです・・・
0095デフォルトの名無しさん
2014/01/12(日) 23:00:40.74#src = ['abc', 'abcd', 'abcd', 'abcd', 'bcd', 'bbt', 'yyf', 'zat']
#なら dst = ['abcd', 'yyf', 'zat', 'bbt']
dst = [x for x in set(src) if all(x not in y for y in set(src)-set([x]))]
内包表現は書いた本人ですら後で分んなくなることがあるから困るけど好き。
0096デフォルトの名無しさん
2014/01/12(日) 23:16:56.22パス(fpath)じゃなく数値(a)を渡してる
0097デフォルトの名無しさん
2014/01/13(月) 00:41:46.88オリジナル(>>82)が関数型の内包表記で書かれているんだから、
わざわざ手続き型で書き直すでのはなく、
まず最初は以下のように展開するのがPythonらしいと思ふ
dst = [
x for x in src
if not any(
x in y for y in src
if x != y
)
]
0098デフォルトの名無しさん
2014/01/13(月) 00:51:12.78# >>62
from collections import OrderedDict
unique = lambda xs: OrderedDict.fromkeys(xs).keys()
src = unique(['abc', 'abcd', 'abcd', 'abcd', 'bcd', 'bbt', 'yyf', 'zat'])
dst = [x for x in src if not any(x in y for y in src if x != y)]
009962
2014/01/13(月) 03:07:06.89うわこんなにレスをいただいてしまってなんかすみません・・・
質問の後にmapや再帰?でやってみてたんですが上手く行かず困っていました
いただいたレスを一つずつ試して見ます
ありがとうございました!
0100デフォルトの名無しさん
2014/01/13(月) 09:42:32.16把握するっていうサーバー的アプリを作りたいが、監視でCPU100%になるのを
防ぐためには、スレッドという機能を使えばよいのかな?
何をしたいかというと、クライアントPCからサーバーのフォルダにファイルを
コピーすることで仕事のトリガーとするシステムを妄想しているのだ
WEB系の技術でやるべきものだろうけど、そっち系の知識がゼロなので
0101デフォルトの名無しさん
2014/01/13(月) 10:03:27.10>把握するっていうサーバー的アプリを作りたい
で運用に支障がでるほど、負荷がかかるとは思えない
サーバ的ってあるけどクライアント的な部分はどいういうものなの
>>100が作ろうとしてるものと、答えようとする人間の想像するものが違ってるくるかもしれないから
ディレクトリ内のファイル数とかも含めてもうちょい詳しく書いたほうがいい
0102デフォルトの名無しさん
2014/01/13(月) 10:05:06.450103デフォルトの名無しさん
2014/01/13(月) 10:06:01.70time.sleep で大丈夫だと思うけど
そういったシステムなら、ファイルシステムのイベント通知が使える。
watchdogというクロス・プラットフォームなライブラリがあるよ。
0104100
2014/01/13(月) 10:14:21.71もしサーバってのがサーバ・プログラムのプロセスを指してるんだったら、
シングル・プロセスなサーバのプロセス内でsleepしちゃまずいか。
バックグラウンド・ジョブを想定してた。
でも、トリガにwatchdogは使えるので、後は適当なプロセス間通信の方法調べてがんばって。
0105103,104
2014/01/13(月) 10:17:43.860106デフォルトの名無しさん
2014/01/13(月) 10:41:12.68妄想を書いてみる
これらを全部PythonとWindowsのバッチファイルでやろうという試み
Web系って覚えることが多すぎて自分には無理
(ちなみに自分はただの事務員。金がないからお前が作れと言われた)
クライアントPCの仕様
・リクエスト内容を示すテキストファイルを作る
・Windowsのネットワークドライブ経由、バッチファイルで
サーバーのリクエスト受付フォルダに上記ファイルをCOPYする
ファイル数など
・クライアントPCは20台くらい、PCごとに一日10リクエストくらい、計200個のファイルを処理
・リクエストタイミングは不定
サーバーの処理内容
・データベースを持ち、リクエストに応じ検索・加工をした結果をCSVファイルに吐き出す
サーバーで処理した結果の返し方
・サーバー上にあるクライアントPCごとの返信専用フォルダに結果ファイルを格納
・クライアントPC操作者は頃合いを見て上記フォルダをエクスプローラで覗き持って行く
0107デフォルトの名無しさん
2014/01/13(月) 11:13:52.760108デフォルトの名無しさん
2014/01/13(月) 16:50:06.40b = 13
を区別する方法ってありますか?
0xdを評価するときに,13になるのでしょうか?
0109デフォルトの名無しさん
2014/01/13(月) 17:08:17.8916進数を理解できてないの?
0110デフォルトの名無しさん
2014/01/13(月) 17:51:31.41すみません.確かにその通りですね
0111デフォルトの名無しさん
2014/01/14(火) 14:45:18.06変数名の候補が出てこないんですが どうしたら出るようになりますか?
例えば
name = "a"
na
↑ここで name が出てほしいんですけど何も出ません
0112デフォルトの名無しさん
2014/01/14(火) 14:52:23.00http://stackoverflow.com/questions/491053/no-code-completion-and-syntax-highlighting-in-pydev
PyDev持ってねーから知らんけどこのへんでどうよ
0113111
2014/01/14(火) 14:53:31.320114デフォルトの名無しさん
2014/01/15(水) 20:10:26.97必要なデータをすぐにアウトプットできるようなプログラムを作ってみたい
とりあえず入門としてPythonスタートブックっていうのを読んでみたんだけど、
次の参考書としておすすめの本ってありますか?
0115デフォルトの名無しさん
2014/01/15(水) 20:11:22.320116デフォルトの名無しさん
2014/01/15(水) 20:15:15.410117デフォルトの名無しさん
2014/01/15(水) 21:07:20.790118デフォルトの名無しさん
2014/01/15(水) 22:57:01.190119デフォルトの名無しさん
2014/01/16(木) 01:58:58.780120デフォルトの名無しさん
2014/01/16(木) 11:34:54.23__init__のクラスの初期化って一体何のために必要なんですか?
0121デフォルトの名無しさん
2014/01/16(木) 12:02:34.80そのクラスを使うほうからしたら、あとになってからこれ要るよって言われるより
最初に言われたほうが書きやすい
>>> rq = urllib.request.Request()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() missing 1 required positional argument: 'url'
0122デフォルトの名無しさん
2014/01/16(木) 17:29:23.08ありがとう
じっくり考えてみる
0123デフォルトの名無しさん
2014/01/17(金) 00:57:49.42con = sqlite3.connect('a.db')
with con:
ここでロールバックしてwithを抜けるスマートな方法って何かない?
例外を投げてwithの外側で捕捉する方法だと
インデントが深くなるからそれ以外でお願いします。
0124123
2014/01/17(金) 01:02:20.100125デフォルトの名無しさん
2014/01/17(金) 05:21:27.27頭固いぞ
0126デフォルトの名無しさん
2014/01/17(金) 06:26:36.31Q. withブロックを途中で抜けたい
こうでしょ?
A. 今のところbreakのような安直な方法はないので
自分でwhileやdefみたいなブロックを作ってください
0127デフォルトの名無しさん
2014/01/17(金) 06:33:10.03インデントが深くなるのが嫌ならPythonは使わないことです
0128デフォルトの名無しさん
2014/01/17(金) 12:35:52.482.6だと contextlib.nestedが必要かも知れないけど、with に複数のcontext managerを列挙できる。
>with を途中で抜ける
例外を使う。withの外に例外を伝えたくなければ、特定の例外を捕捉するcontext managerを併用する。
@contextlib.contextmanager
def pass_exc(*exc_types):
try:
yield
except exc_types:
pass
class BreakContext(Exception): pass
with pass_exc(BreakContext), con:
raise BreakContext
0129128
2014/01/17(金) 12:46:21.22上の例では con を先にするか後にするかで、例外が伝わるかどうかが変わってくる点に注意が必要。
その辺の制御の流れは、少し判り辛いので、
望みの振る舞いをするトランザクションのcontext managerを書き下す方が良いかもしれない。
2.6のwhat's new や PEP343 にトランザクションのcontext managerの実装例が載ってます。
0130デフォルトの名無しさん
2014/01/17(金) 13:01:07.24この場合、例外を使わずrollbackするには明示的に呼ぶ必要があり
def do_something(con):
return con.rollback()
with con:
do_something(con)
スマートさに欠ける点は、これだとwith抜けるときにcommit()も呼び出される。
rollback直後でinTransactionフラグがfalseになってるから、
データベースにCOMMITは発行されないけど。ここは commitメソッドの実装依存。
0131デフォルトの名無しさん
2014/01/17(金) 20:18:20.92以下のように3つ関数があって、test1⇒test2⇒test3の順に処理を流したいのですが、
test1でえられたitemをtest2で使えるようにして、test2でえられたlistをtest3の処理の中で使用したいのですが
どういう風に記述したらいいでしょうか?初歩的ですみません..
def test1()
...
return item
def test2()
...
return list
def test3()
#
#実行
test1()
test2()
test3()
0132デフォルトの名無しさん
2014/01/17(金) 21:20:22.07def test1()
...
return item
def test2(i)
...
return list
def test3(l)
i = test1()
l = test2(i)
test3(l)
0133デフォルトの名無しさん
2014/01/17(金) 21:26:22.71神!ありがとうございます!
0134デフォルトの名無しさん
2014/01/17(金) 21:56:58.90頑張ってくれ
0135デフォルトの名無しさん
2014/01/17(金) 22:46:20.73def add(n):
return n+1
def multiply(n):
return n*10
def divide(n):
return n/2
num_list = [1,2,3]
added = map(add, num_list)
multiplied = map(multiply, added)
divided = map(divide, multiplied)
0136デフォルトの名無しさん
2014/01/17(金) 23:53:27.77プロファイル取ってみればわかると思うけど、
Pythonで関数型っぽいコードは大抵、実行効率が良くないよ。
関数型の概念等はとても有用だけど。関数型の言語に比べると処理系の実装が適してない。
python流(?)に書いた方が保守もしやすく(Pythonでは)効率良い
[(x+1)*10/2 for x in [1,2,3]]
0137デフォルトの名無しさん
2014/01/18(土) 00:21:48.56いまだにreduceはピンとくる使いどころがわからないけど
0138デフォルトの名無しさん
2014/01/18(土) 01:03:26.08reduce使った関数合成と、無理やり使ってみた感のある応用例書いてみた。興味あったら、どぞ。
ideone.com/vN8PuJ
reduceはリストを順に処理して、最終的にひとつの要素に収束するような処理に用いるのだけど、
Pythonでreduceを使う局面は、普通にforループの手続きで書いた方が良いよ。
0139デフォルトの名無しさん
2014/01/18(土) 02:48:09.02原始帰納関数はすべてfold(reduce)で再実装できるというのがミソ
0140デフォルトの名無しさん
2014/01/18(土) 14:30:44.02(Pythonの)reduce関数の実装を指してのことならyes
初期値を取れるから、foldのようにも使える。
0141デフォルトの名無しさん
2014/01/19(日) 02:50:12.780142デフォルトの名無しさん
2014/01/19(日) 03:30:12.94検索するとだいたい以下のようなサンプルが出てきます
try:
ここでエラー発生
except:
logging.error(~~)
これだとtryでキャッチしている箇所でないとファイルに書き出せません
そうではなく、どこでエラーが起きても全てファイルに書き出すにはどうすればいいのでしょうか
0143デフォルトの名無しさん
2014/01/19(日) 03:44:05.510144デフォルトの名無しさん
2014/01/19(日) 04:50:19.59midnight = datetime.fromordinal(datetime.date.today().toordinal())
>>142
logging用途なら sys.excepthook はどう?
0145144
2014/01/19(日) 05:10:30.55datetime.fromordianl -> datetime.datetime.fromordinal
0146デフォルトの名無しさん
2014/01/19(日) 05:26:39.90ありがとうございました。そのような便利メソッドがあることを知りませんでした。
ドキュメントを読みなおしてみます。
0147デフォルトの名無しさん
2014/01/19(日) 13:41:26.28がいくつかある模様。
tweepyの方は使いやすいですか?
0148デフォルトの名無しさん
2014/01/19(日) 15:03:05.450149デフォルトの名無しさん
2014/01/19(日) 15:36:20.260150デフォルトの名無しさん
2014/01/19(日) 16:55:29.790151デフォルトの名無しさん
2014/01/19(日) 17:42:13.410152デフォルトの名無しさん
2014/01/19(日) 19:47:59.94http://hayabusa.2ch.net/test/read.cgi/news4vip/1390125059
Python3って文字列Unicodeだけになったんだっけか
デフォルトのエンコーディングutf-8じゃないんじゃねえの
これとか参考になんね?
http://stackoverflow.com/questions/9322410/set-encoding-in-python-3-cgi-scripts
違和感
0153デフォルトの名無しさん
2014/01/19(日) 20:39:56.610154デフォルトの名無しさん
2014/01/19(日) 20:51:17.880155デフォルトの名無しさん
2014/01/19(日) 21:19:15.730156デフォルトの名無しさん
2014/01/19(日) 21:33:38.540157デフォルトの名無しさん
2014/01/19(日) 22:10:15.58自分の日記にも書けないようなことを書くとこだよ
0158デフォルトの名無しさん
2014/01/20(月) 00:00:05.16そのあたりの知識ってどういうところで学んでるの?
書籍とか?
0159デフォルトの名無しさん
2014/01/20(月) 00:20:28.64Web上のLinuxやプログラミング言語のマニュアル読めば十分じゃないの
0160デフォルトの名無しさん
2014/01/20(月) 02:13:11.86標準入出力(stdin,stdout)等の事?プロセスの開始や環境変数の伝播等
カテゴリ的には「システム・プログラミング」
「POSIX」という共通の規格があるけど、細かい部分ではOS依存になるので、
より深い所に関心があるなら、各OS毎の情報を調べる事になります。
Linuxだとman、WindowsだったらMSDNとかになるのかな。
この辺の情報は、書籍でも大抵はC言語になると思う。
0161デフォルトの名無しさん
2014/01/20(月) 17:35:18.99Pythonの正規表現苛つく...
何なんだよ、コレ!?
ワケが分からん
0162デフォルトの名無しさん
2014/01/20(月) 17:40:18.82背伸びしても疲れるだけだぜ
0163デフォルトの名無しさん
2014/01/20(月) 17:44:10.50そもそもああいうのはHTMLを一旦読み取ってタグやらを除去してるのか?
0164デフォルトの名無しさん
2014/01/20(月) 17:55:50.830165デフォルトの名無しさん
2014/01/20(月) 18:00:57.86ワケ分からなくはないだろ
0166デフォルトの名無しさん
2014/01/20(月) 18:15:45.70後方一致だとか、大文字小文字の無視とか訳が分からんかった
PHPのpreg_matchみたいな簡単なのあればいいのに
文法が気に喰わん
re.compile()した後にsearch()してgroup()して...とか
めんどくさい
0167デフォルトの名無しさん
2014/01/20(月) 18:17:25.84パーサを作って、タグや属性等はイベント・ドリブンで処理してる。
0168デフォルトの名無しさん
2014/01/20(月) 18:19:12.38mechanizeってライブラリで簡単にできる例えば
<div>あ</div> ← こういう文字列から"あ"だけを取り出すのとか
自分で正規表現かく必要すらない
でもPythonからmechanizeを扱うには日本語資料少なすぎて難しいかもしれない
rubyからmechanizeを扱うなら資料沢山あるのだけど
0169デフォルトの名無しさん
2014/01/20(月) 18:21:09.90正規表現よく使うなら正規表現リテラルのある Ruby のほうが向いてるかも
あと Python は re.compile() するのが面倒なら re.search() とかモジュールメソッド呼んでも構わない
0170デフォルトの名無しさん
2014/01/20(月) 20:05:04.04シングルクォート、ダブルクォート以外にしたいんだけど
例えば、
pattern = r"正規表現"
r = re.compile(pattern)
m = r.search(str)
が一般的だと思う
0171デフォルトの名無しさん
2014/01/20(月) 20:27:29.51r"\n" は バックスラッシュと n の二文字に解釈される
正規表現のデリミタではないよ
0172デフォルトの名無しさん
2014/01/20(月) 20:42:39.09がめんどいから
r|"|
みたいに書けないかって話だと思う
perlやrubyの悪臭がするけど
0173デフォルトの名無しさん
2014/01/20(月) 20:54:00.40日本語ドキュメントあるんだし読めよ
0174デフォルトの名無しさん
2014/01/20(月) 20:57:02.690175デフォルトの名無しさん
2014/01/20(月) 21:52:12.29そう、そういうこと
説明の仕方が悪かったね、ごめん
0176デフォルトの名無しさん
2014/01/20(月) 23:49:20.74〇〇以外の文字列が含まれているかどうかってのはどうやって判断すればいいの?
俺が馬鹿なのか全く思いつかない
0177デフォルトの名無しさん
2014/01/20(月) 23:58:23.090178デフォルトの名無しさん
2014/01/20(月) 23:59:47.69アホは、○○を検索して見つからなかったら含まれていないと考えるw
0179デフォルトの名無しさん
2014/01/21(火) 00:31:58.54重複する文字を許すかどうかで変わってくると思う。
"lolol".replace("lol", "") # 'ol'
re.sub(r"lol", "lolol", "") # ''
not re.match(r"^(AAA|BBB|CCC)+$", "CCCBBBAAAd") # True
0180179
2014/01/21(火) 00:33:53.50re.sub(r"lol", "", "lolol") # '' でした
0181デフォルトの名無しさん
2014/01/21(火) 11:16:29.47e = re.compile(pattern)
r = e.search(str)
if r is None:
print("fuck you")
else:
i = 0
while i >= -:
m = e.search(str, i)
if m:
print m.group(1)
i = m.start() +1
と書いてる(後半は自分のやり方)
0182デフォルトの名無しさん
2014/01/21(火) 11:20:45.13r = re.search(pattern, str, flags)
と書いてたんだけど、これでいけるの?
実際実行してみて上手くいったような気がするんだけど、
compileしなくてもいいのなら、連続で正規表現適用させる場合なんか、わざわざ冗長な上の書き方しなくて済むから楽だよね?
この下のやり方で問題のある時、デメリットってあるの?
0183デフォルトの名無しさん
2014/01/21(火) 11:44:47.68>>> re.sub(r"lol", "", "lolol")
'ol'
0184デフォルトの名無しさん
2014/01/21(火) 12:51:19.13コンパイル済み正規表現オブジェクトは、Python2では100個、Python3では512個キャッシュされるので
re.search使ったとしても、毎回コンパイルされるわけではない
詳しくは /Lib/re.py のソースコード参照
ループ中で同じ正規表現を何百万回も使う場合など・・・
キャッシュから取り出す処理時間すらも削りたい状況ではcompileを使うべき
速度を気にしないなら可読性の良いre.searchでおk
ただしre.searchには、検索範囲を指定する引数はない
0185デフォルトの名無しさん
2014/01/21(火) 13:45:16.380186デフォルトの名無しさん
2014/01/21(火) 14:04:58.84Pythonの実装依存
順番をそろえたいなら for k in sorted(dic.keys())
0187デフォルトの名無しさん
2014/01/21(火) 14:08:33.01なるほど
教えてくれてありがと
0188デフォルトの名無しさん
2014/01/21(火) 15:26:29.05lに値が入らず下記エラーになります。
if (l == None): といった風に例外処理を書く事は出来るんでしょうか?
エラーで処理を止めずに、エラーが出た事を取得したいのですが・・
分かる方いらっしゃいましたら、お願い致します! f = open("test.html") s = BeautifulSoup(f) l = s.find("a")["href"] TypeError: 'NoneType' object has no attribute '__getitem__'
0189デフォルトの名無しさん
2014/01/21(火) 16:14:20.71正規表現使用して、該当部分を表示するのではなく、
逆に削除して、その部分を抜いて表示したい場合どうすればいい?
>>181で言えば、m.start()やm.end()で該当部分が出てくるけど(例えば123-184)、
その部分を抜いて表示するというやり方しかないのかな?
0190181
2014/01/21(火) 16:30:30.41i = m.start()+1じゃダメだね
i = m.end()+1じゃないと
じゃないと重複が大量に出てきてしまうし、処理速度が極めて遅くなってきそう
0191デフォルトの名無しさん
2014/01/21(火) 16:44:36.99置換したいのかな?
s = "ab2c45d67e8fg"
print(re.sub(r'\d+', '', s))
0192181
2014/01/21(火) 16:49:41.71あ、そうか
俺バカだなぁ
str = str[0:m.start()-1] + str[result.end()+1:]
とかめんどくさいことしてた
ま、これでも出来ることは出来るんだけどね
どっちが処理速度が早いかは分からんけど
なんかPython触ってから他の言語で出来ることを複雑に考えすぎてるのか、混乱してるっぽい
とりあえず教えてくれてありがと
0193デフォルトの名無しさん
2014/01/21(火) 17:09:45.45たぶんfindで見つからないときNoneが返るんでしょ?
a = s.find("a")
if a is None:
print 'エラーです'
else:
l = a["href"]
0194デフォルトの名無しさん
2014/01/21(火) 21:06:23.68あー思い通りにいきました。ありがとうございます。
0195デフォルトの名無しさん
2014/01/22(水) 02:17:05.01>>185
順序付辞書なら、collections モジュールに OrderedDict もあるよ。こちらは挿入順。
0196デフォルトの名無しさん
2014/01/22(水) 17:49:26.29関数内でループが適用されません
以下のスクリプトを行うと、urlやjavascriptがそれぞれ一つずつしか抽出されません
インデントも確認してみたんですが...
うpローダーにスクリプトをあげました
http://www.dotup.org/uploda/www.dotup.org4819644.py.html
関数にせずに、それぞれ素で適用させた場合は上手くいくのですが、
そのそれぞれの処理を関数に書いて適用させた際には、結果が一つしか出てきません
スコープなのかなぁ?
Pythonは良く分かりません
0197 忍法帖【Lv=3,xxxP】(2+0:5)
2014/01/22(水) 17:58:01.18すみません
0198デフォルトの名無しさん
2014/01/22(水) 18:28:22.22再現可能なサンプルデータぐらい用意したら?
URLじゃなくてそのまま食わせられるHTMLね
あと、ソース貼るならpastebin.com、codepad.org、ideone.comとかにしてくれ
0199デフォルトの名無しさん
2014/01/22(水) 18:31:28.15チラっと見た感じだけど、正規表現パターンが原因でしょ
最初の pattern_url はいいが、残り2つは前後に .+ .* が付いてるから
1回で文字列全体にマッチして終了してしまうよ
0200デフォルトの名無しさん
2014/01/22(水) 18:33:26.130201デフォルトの名無しさん
2014/01/22(水) 18:43:02.73results = []
for m in re.finditer(r'''\bhref=['"]?([^"<>\s]+)''', html, flags = re.I):
results.append(m.group(1))
if uniq:
results = list(set(results))
0202デフォルトの名無しさん
2014/01/22(水) 20:57:54.65tagRemoveのre.subを繰り返し呼ぶようなコードだけど、
一度で全て置換されるのでループは不要。
re.subn使えば置換個数を確認できます。
0203デフォルトの名無しさん
2014/01/22(水) 21:47:35.69皆さん、色々とアドバイスありがとうございました
0204デフォルトの名無しさん
2014/01/23(木) 00:17:18.66コード : pastebin.com/7YqtR23Q
空白行が除去できないのですが、これは自分の正規表現の書き方が悪いからでしょうか?
それとも、pythonのコーディングが間違っているからでしょうか?
自分の結果では最初の20行は空白行が続き、21行目に" / "と言う文字が出てきます
その後はまた暫く空白行が続きます
これらの空白行を全部取り除きたいのですが...
もしかしたらこのような面倒くさいやり方ではなく、関数などの利用で一気に除去できるかもしれませんが
検索しても見当たりませんでした
アドバイス頂けないでしょうか?
0205デフォルトの名無しさん
2014/01/23(木) 00:36:54.08ループを回すような処理が遅くて困っています。
リスト内包表記とかmap関数とかjoin関数とかで
極力高速化しているものの、Pure Pythonでは
頭打ちの状態です。
CPythonやCython、PyPyなど、実装側で高速化する
方法を検討していますが、これといった決め手に
欠けています。
主な用途はNumPyを併用した科学計算や
データの整形など、数値計算寄りです。
サーバアプリのような規模の大きいものではなく、
単一のスクリプトファイルを必要な時に叩くといった
やり方がほとんどです。
sys、os、subprocess、numpyは必須。
できればscipyやmultiprocessingも使いたいです。
Mac/Win/Linuxいずれの環境でも実行できる必要が
あります。
そして互換性や可読性の都合上、各実装に特化した
コーディングは極力避けたいです。
各実装の得手不得手など、ざっくりとした内容で
結構ですのでご意見いただけませんでしょうか?
0206デフォルトの名無しさん
2014/01/23(木) 01:14:19.47そのままゴリ押ししても良いことないです。
0207デフォルトの名無しさん
2014/01/23(木) 01:16:49.69正規表現を勉強する
検索ではなく公式のチュートリアルと標準ライブラリにざっと目を通す
2 タブをやめる
0208デフォルトの名無しさん
2014/01/23(木) 01:51:16.12cで書け
0209デフォルトの名無しさん
2014/01/23(木) 02:17:47.09Cythonで十分だろう
なにが不満なんだ
0210デフォルトの名無しさん
2014/01/23(木) 02:39:36.29つanaconda accelerate
0211デフォルトの名無しさん
2014/01/23(木) 03:12:36.80PyPyは確かにCPythonより計算とか速いこともあるけど一長一短でそれだけな感が
Cythonは型指定でC/C++に迫れるけどそもそもCに変換してコンパイルしてるので
C/C++で書いたらいいじゃない感、PurePythonコーディングでなければ互換性がないのも…
numpy前提なら小手先のマルチプロセスより
pyopenclでも使ったほうが次元の違うレベルになるんじゃないかな
0212デフォルトの名無しさん
2014/01/23(木) 04:28:10.51ここで質問したのはもう終わりにするの?
Regular Expression(正規表現) Part12
http://toro.2ch.net/test/read.cgi/tech/1387257592/234
0213デフォルトの名無しさん
2014/01/23(木) 06:54:13.07空白行を取り除く
print("\n".join(x for x in html.splitlines() if x))
0214デフォルトの名無しさん
2014/01/23(木) 06:56:06.28俺は速度が必要な時はCython/Cだね
Cで書いてCythonでGILを開放しつつ糊付け
あとはスレッド作って回す
0215デフォルトの名無しさん
2014/01/23(木) 10:39:52.600216デフォルトの名無しさん
2014/01/23(木) 10:53:42.610217デフォルトの名無しさん
2014/01/23(木) 11:07:46.37最終的に何がしたいのか分からんがBeautifulSoupでやればいいんじゃね?
http://kondou.com/BS4/#get-text
0218デフォルトの名無しさん
2014/01/23(木) 11:36:48.25このプログラムはURLを抽出するだけ?
import urllib.request
from bs4 import BeautifulSoup
url = "http://hoge.com/hoge.html"
html = urllib.request.urlopen(url).read()
soup = BeautifulSoup(html, from_encoding='cp932')
url_list = [link.get('href') for link in soup.find_all('a')]
print(url_list)
0219204
2014/01/23(木) 13:29:44.81今から色々と試してみますが、前もって感謝の意を述べておきます
>>212
いえ、そうではなくて、自分の書いたスクリプトが正規表現が問題ではなく、
そもそもpython自体が問題だったかもしれないのでそこを確かめたかったのです
>>213
ありがとうございます
正規表現でなく、組み込み関数を利用して出来れば遥かに良いのでそういうやり方を教えていただけるとありがたいです
今ざっとやってみたところ、最初の部分の空白行は除去されていましたが、後ろの方はまだ残っているようです
暫く試行錯誤してみます
>>217
以前PHPを使ってDOMを利用してたときも同様の経験をしたのですが、
BeautifulSoupは補完してくれる事もあるようですが完璧ではなく、
HTMLのパースエラーが出ることがあり、汎用的じゃないとの決断を下しました
なので、自分でどんな構文でも処理できるようにしようと思いまして
0220デフォルトの名無しさん
2014/01/23(木) 15:20:45.410221デフォルトの名無しさん
2014/01/23(木) 16:24:38.13すげえなコイツw
0222デフォルトの名無しさん
2014/01/23(木) 16:58:41.77> いえ、そうではなくて、自分の書いたスクリプトが正規表現が問題ではなく、
> そもそもpython自体が問題だったかもしれないのでそこを確かめたかったのです
えっ?
0223デフォルトの名無しさん
2014/01/23(木) 17:12:22.970224デフォルトの名無しさん
2014/01/23(木) 17:32:39.77技術途上の目覚ましい、比較的初段回においてそういった考えがめぐるのは分かる。
しかしそれを公然と言い仰せるとはいやはや大物の予感。
0225デフォルトの名無しさん
2014/01/23(木) 17:42:55.240226デフォルトの名無しさん
2014/01/23(木) 18:35:59.03大物が続々と現れますな
0227デフォルトの名無しさん
2014/01/23(木) 18:36:58.78用意されてるpythonをインストールして使うぐらいしか出来ないわ
0228デフォルトの名無しさん
2014/01/23(木) 18:50:48.580229デフォルトの名無しさん
2014/01/23(木) 19:41:31.090230デフォルトの名無しさん
2014/01/23(木) 20:09:32.500231デフォルトの名無しさん
2014/01/23(木) 20:16:28.18スペースやタブのみの行も取り除くなら、これでどうかな。
print("\n".join(x for x in html.splitlines() if x.strip()))
全角スペース等があれば、別途対応が必要かもしれない。x.strip(" \t ") のように
後、HTMLを正規表現で処理するのは、例外的な状況への対応で面倒が多い。
ネストした要素や行儀の悪いHTML、正しいHTMLでも、閉じタグのない要素を取り除くとか。
タグの抽出等は、
HTML Tidyのようなフィルターを通してから、HTML/XMLパーサに渡して、XPATHで扱うのが手軽。
import lxml.html
url_list = lxml.html.parse(URL).xpath(r"//a/@href")
0232デフォルトの名無しさん
2014/01/23(木) 20:17:00.680233デフォルトの名無しさん
2014/01/23(木) 20:54:41.48た、たしかに、正直すまんかった
いかなる妄言も甘んじて生暖かい目で見守らねばならん
0234デフォルトの名無しさん
2014/01/23(木) 21:04:55.54ツール選択の前に、示されてる高速化の手法に疑問があるのだけど、
組み込みのリスト使ってるのかな?
numpyの配列を扱ってるのなら、Pythonでforループや内包表記/mapで回したりせず、
速度を求めるなら、極力numpyの関数内で処理するようにコードを組み立てる事になります。
0235デフォルトの名無しさん
2014/01/23(木) 21:15:15.70俺unittestしか使ったこと無かったけど、noseやpy.testのようなサードパーティ製も気になってきた
unittestめんどくさいんだよな
0236デフォルトの名無しさん
2014/01/23(木) 21:29:58.960237デフォルトの名無しさん
2014/01/23(木) 21:46:15.030238デフォルトの名無しさん
2014/01/24(金) 04:20:39.270239デフォルトの名無しさん
2014/01/24(金) 20:32:44.340240デフォルトの名無しさん
2014/01/24(金) 20:43:37.44旧unittest もしくは、各フレームワーク標準のもの使ってる。(twisted.trial)
機能的な利点があるわけではないけど、保守的な理由で。
ファイル一個で完結する場合は assertとdoctest
乗り換えるなら py.test かな。unittest/nose どちらでも移行が簡単そうだし。
0241デフォルトの名無しさん
2014/01/25(土) 13:51:51.24PHPの@を付けるだけというようなものはないのでしょうか?
0242デフォルトの名無しさん
2014/01/25(土) 14:16:24.33PHPの@演算子ってエラー制御というよりエラー抑制をしたいの?
Pythonだとtry使ってexceptでpassするしか無いんじゃないかな
0243デフォルトの名無しさん
2014/01/25(土) 16:22:58.20なるほど、passしかないんですね
0244デフォルトの名無しさん
2014/01/25(土) 16:37:02.440245デフォルトの名無しさん
2014/01/25(土) 17:22:28.87プログラミングの経験はJavaで電卓作った程度です
0246デフォルトの名無しさん
2014/01/25(土) 17:57:25.02そういえばエラー抑制しか考えずにレスしちゃったけど
もし事前に検証可能ならPythonの論理演算子は短絡で最後に評価した値を返すから
result = validate and expression
のように簡潔に書け、高コストな例外発生をさせずに済む
あるいはdictのgetのようなそもそも例外を出さない方法があればそうするとか
or die的なものならexcept節でsys.exitやquit/exitを呼ぶとか
やっぱり例外処理になるのかな(quit/exitは標準入力も閉じる
>>245
入門言語という点なら悪くない選択だと思います…が
Pythonのオブジェクト指向は純粋な実装ではないので
Javaを触ったことがあるのならC#という選択も良いんじゃないかな?
0247デフォルトの名無しさん
2014/01/25(土) 17:58:46.820248デフォルトの名無しさん
2014/01/25(土) 18:26:13.280249デフォルトの名無しさん
2014/01/25(土) 18:35:06.55Pythonを今後使っていきたいという明確な目的があるなら
Pythonでオブジェクト指向プログラミングを勉強するのは
悪くないだろう。
ただ、Javaの経験があるならJavaでもいいんじゃないかと
いうのが大多数の意見だと思う。
ここはPythonスレだし、Pythonistaが増えることは
大歓迎だけどね。
0250デフォルトの名無しさん
2014/01/25(土) 18:54:23.60with文 で >>128 のような contextmanager を使う。
例外のコストは、C++やJava等とは事情が違い、
事前にチェックするよりも、例外捕まえる方が効率よいケースがあったりするよ。
実際に例外が投げられるのは高価だけど、try/except ブロック自体はそれ程高くない。
0251デフォルトの名無しさん
2014/01/25(土) 20:04:18.61あんまりみたことがないけど
一般的に流行ってないのか
python的に分かりにくいのかどっちなんだろ
0252デフォルトの名無しさん
2014/01/25(土) 21:09:32.460253デフォルトの名無しさん
2014/01/25(土) 21:12:40.82メモリリークするからタスクスケジューラ等を使用するのがいいのでしょうか?
理想はコンパイルしたexeファイルを起動したまま間隔をあけて繰り返す、です。
初心者のためアドバイス頂けると嬉しいです!
0254デフォルトの名無しさん
2014/01/25(土) 21:22:28.98コードで書いても大した量じゃない
http://ideone.com/nhhhNN
ところで、上のコードでは
while thread.is_alive(): time.sleep(1)
で待機してる
これをThread.joinでやろうとするとKeyboardInterruptが来ない
何でだよ
0255デフォルトの名無しさん
2014/01/25(土) 21:28:49.28for n in range(60*30) time.sleep(1)
にすれば割り込みを拾えるようになると思います
なんかそういう仕様らしいです
0256デフォルトの名無しさん
2014/01/25(土) 22:01:22.36調べてもどういう事をやってるか全然わからないですが(time.sleep(1)とか)
subprocess.call('nslookup google.com')の部分に処理をいれたらいいんですね。ありがとうございます!
0257デフォルトの名無しさん
2014/01/25(土) 23:11:58.89標準ライブラリとか例外クラスで普通につかわれてる
0258デフォルトの名無しさん
2014/01/26(日) 01:32:30.27バージョンはPython2.7です。よろしくお願いします。┏○ ペコリ
・ディレクトリツリー
target/
folder1/
folder11/
file111
file11
file12
folder2/
file21
file22
file1
file2
・得たいリスト
[ {’name’ : ’folder1’, ‘child’ : f1}, {’name’ : ’folder2, ‘child’ : f2}, {’name’ : ’file1’}, {’name’ : ’file2’} ]
f1 = [ {’name’ : ’folder11’, ‘child’ : f11}, {’name’ : ’file11’}, {’name’ : ’file12’} ]
f11 = [ {’name’ : ’folder1’, ‘child’ : f1}, {’name’ : ’file111’} ]
f2 = [ {’name’ : ’file21’}, {’name’ : ’file22’} ]
※ 見やすくするために、f1, f11, f2 を変数で分離していますが、実際は辞書の中で展開されています。
0259デフォルトの名無しさん
2014/01/26(日) 01:50:35.70亀だけどscipyにもweaveというインラインC/C++があるみたい
でもわざわざライブラリ使ったり組んだりするまでもない規模なら
ctypesが関数プロトタイプにアドレス指定できるということは
標準ライブラリだけでマシンコード実行できるじゃんと思い至ったんだ
ttp://ideone.com/l6QivM
Hand Assembly Data Execution in Script略してHADES
デスマーチを彷彿とさせるね!というくだらない事を言いたかっただけですはい
ぐぐってみたら案の定同じような変態が居て笑った
0260デフォルトの名無しさん
2014/01/26(日) 09:52:30.99叩き台書いてみた。
(※ あまりテストしてません。os.walkの走査する順序に依存してるかもしれない)
ideone.com/PHnCTP
こういった再帰で書くような処理をループで処理する時は、
データ構造のスタックの利用を考えるとうまくいくよ。
0261デフォルトの名無しさん
2014/01/26(日) 10:22:29.66import os
def f258(path):
root, dirs, files = os.walk(path).next()
a = [{'name':name, 'child':f258(os.path.join(path,name))} for name in dirs]
b = [{'name':name} for name in files]
return a+b
def f258view(tree,level=0, space=" "):
for x in tree:
name = x['name']
if x.has_key('child'): name += "/"
print space*level + name
if x.has_key('child'):f258view(x['child'], level+1)
tree = f258("target")
f258view(tree)
0262デフォルトの名無しさん
2014/01/27(月) 00:28:25.53辞書でなくてもいいなら、
3.4 で標準ライブラリに入る pathlib が、インストールすれば 2.7 でも使える。
def view_path_tree(root, level=1, indent=" "*4, _format="{}{}".format):
print(_format(indent*(level-1), root.name+"/"))
for path in root.iterdir():
if path.is_dir():
view_path_tree(path, level+1, indent, _format)
else:
print(_format(indent*level, path.name))
from pathlib import Path
view_path_tree(Path("."))
0263デフォルトの名無しさん
2014/01/27(月) 17:41:36.88'taro\ttanaka'
この文字列中のTabをリスト内包表記でSpaceに変換できないでしょうか
0264デフォルトの名無しさん
2014/01/27(月) 17:54:57.95解決しました。ありがとうございました
0265デフォルトの名無しさん
2014/01/27(月) 18:00:51.85http://docs.python.jp/2/library/stdtypes.html#str.expandtabs
0266デフォルトの名無しさん
2014/01/27(月) 18:27:18.190267デフォルトの名無しさん
2014/01/27(月) 18:31:22.82def odd(n):
if n % 2:
return n
[i for i in L if odd(i)]
Pythonで高階関数を実装すると、こんな感じ?
0268デフォルトの名無しさん
2014/01/27(月) 18:44:27.280269デフォルトの名無しさん
2014/01/27(月) 18:46:01.76高階関数って fold とか map とかあのへんじゃないの
0270デフォルトの名無しさん
2014/01/27(月) 19:33:50.41PythonでOrangeをインポートして分析を行いたいのです。
データのtxtファイルやcsvファイルを読み込んでいる例を見たのですが
txtファイルがどのように書かれているかご存知の方教えてください。
txtファイルがどのように書かれているかが分かれば分析できそうなのですが…
0271デフォルトの名無しさん
2014/01/27(月) 19:51:30.67これのこと?
http://orange.biolab.si/docs/latest/tutorial/rst/data/
0272デフォルトの名無しさん
2014/01/27(月) 20:38:02.08そのテキストファイルを開いてみたら書き方がわかるんじゃ・・・
0273デフォルトの名無しさん
2014/01/28(火) 00:26:41.01>>271>>272
レスありがとうございます。Orangeはこれです!
このサイトの中にファイルの例が見当たらなくて困っています。
0274デフォルトの名無しさん
2014/01/28(火) 00:47:25.96>>271 のページに lenses.tab って CSV (TSV) ファイルへのリンクがあるけどそれとは違うの?
0275デフォルトの名無しさん
2014/01/28(火) 00:56:14.97ファイルへのリンク張ってると思うけど
Tutorial等のデータは、Orangeインストールしたら Orange/datasets に入ってるよ
Orange Canvasからファイルを読み込む場合は、
ファイル選択の所で "Browse documentation data sets..." 選択すると一覧を開いてくれる。
orange.biolab.si/start-using/ ここから始めよう
0276デフォルトの名無しさん
2014/01/28(火) 01:26:42.21ありがとうございます。
拡張子がtabの場合ってcsvとして扱える、ということでいいですか?
初歩的な質問ですみません。
>>275
Orangeのdatasets確認しました。ありがとうございます!
すみません、「orange.biolab.si/start-using/」はどういうことですか?初歩的な質問ばっかりですみません。
0277「ガスライティング 集団ストーカー カルト」で検索を!
2014/01/28(火) 01:31:40.21・沢山の人が偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
↑マスコミや、カルトのネット工作員がやっていること
TVなどが、偏った思想や考え方に染まっているフリや常識が通じないフリをする人間をよく出演させるのは、
カルトよりキチガイに見える人たちを作ることで批判の矛先をカルトから逸らすことが目的。
リアルでもネットでも、偽装左翼は自分たちの主張に理がないことをわかっているのでまともに議論をしようとしないのが特徴。
,..,
0278デフォルトの名無しさん
2014/01/28(火) 01:34:14.91Orange Canvas -> Help -> Welcome -> Get Start で開くページ
URLです。リンク貼れなかったので頭の h t t p : / / 省いてます
ブラウザによっては、そのまま貼り付けてもok
0279デフォルトの名無しさん
2014/01/28(火) 03:26:13.91ご丁寧にありがとうございます!がんばってみますー
0280258
2014/01/28(火) 17:53:45.29お二方、ありがとうございます。
ループで書く方法と、再帰的に書く方法、どちらも大変参考になりました。
おかげさまで、ファイル・ディレクトリ操作をする自作Scriptの作成が捗りそうです。
>>262
こんなライブラリがあるとは。
3.xでますます便利になりそうですね。
0281デフォルトの名無しさん
2014/01/28(火) 20:20:59.23PHPや他の言語の頃はclass.hoge.phpとか、class.hoge.jsとか書いてたんだけど、
Pythonでは不正というような警告がEclipseに出るんだけど
何かPythonのディレクトリ構造内のファイル名の付け方とか、指南の書かれているサイトとかない?
0282デフォルトの名無しさん
2014/01/28(火) 20:24:35.560283デフォルトの名無しさん
2014/01/28(火) 20:48:12.490284デフォルトの名無しさん
2014/01/28(火) 21:03:46.54標準ライブラリのフォルダを覘けば参考になるよ
0285デフォルトの名無しさん
2014/01/28(火) 21:06:54.01"PEP8" の Package and Module Names
0286デフォルトの名無しさん
2014/01/28(火) 22:08:53.61a = Trueとした場合、どういう風に書けばいいのか分かりません
0287デフォルトの名無しさん
2014/01/28(火) 22:12:55.48isinstance(a, bool)
0288デフォルトの名無しさん
2014/01/28(火) 22:22:20.45あれ?
自分それでやったんだけどエラーでたんだよね
でも今もう一度変数名変えたら出来た
答えてくれてありがとう
0289デフォルトの名無しさん
2014/01/28(火) 23:04:22.36と言うか、存在しないんですか?
ttp://woodyring.blog.so-net.ne.jp/2013-05-25-1
とか見ると、アクセスできてしまうとあるのですが
0290デフォルトの名無しさん
2014/01/28(火) 23:27:40.10>拡張子がtabの場合ってcsvとして扱える、ということでいいですか?
Orange.data.Tableで読み込む場合は、拡張子を見て書式を判別してる部分があるので、
例えば、拡張子 .tab なカンマ区切りのデータは NG です。拡張子 .csv でカンマ区切りなら OK
0291デフォルトの名無しさん
2014/01/28(火) 23:28:09.32PHPにはmethod_exists()のように、指定する関数が存在するかを確認できる関数があります
Pythonにて同じような挙動をさせるにはどのようにすればいいのでしょうか?
ググってみたのですが、分かりませんでした
0292290 続き
2014/01/28(火) 23:31:15.36ファイル先頭にカラム名や型・フラグ等の情報がないと、
数値を期待したのにデータが文字列、等という事が起こりえます。
ファイルの書式は、チュートリアルの一番最初 The Data や
リファレンスの Orange.data.formats に詳しく書かれてます。
0293デフォルトの名無しさん
2014/01/28(火) 23:36:36.060294デフォルトの名無しさん
2014/01/28(火) 23:42:56.01存在しないと思っていい。
アンダースコア2個のは、
Pythonでは、"private" って用語は使わず、"name mangling" って呼ばれます。
>>291
obj.method を調べるなら getattr(obj, "method")
0295294
2014/01/28(火) 23:45:45.470296デフォルトの名無しさん
2014/01/28(火) 23:52:11.410297デフォルトの名無しさん
2014/01/29(水) 00:06:18.04a = hoge()
a.init(config)
#以下はクラス
class hoge(o):
def __init__(self):
self.a = "foo"
self.b = "bar"
def init(self, config={}):
self._clear()
for key, item in config.iteritems():
try:
if self.key: <-ココでエラーが出ます
自分はクラス内のメンバ変数が存在するか(例えばself.a)を調べるために、self.keyとしたのですが、
これではself.aを調べるのではなく、文字通りself.keyを調べに行ってしまいエラーが出ます
どのようにすれば最後のif文にてself.aとself.bの存在を調べられますでしょうか?
0298デフォルトの名無しさん
2014/01/29(水) 00:12:25.44ありがとうございます
つまり、
hasattr(Hide, 'method') and callable(getattr(Hide, 'method'))
クラス内であれば
hasattr(self, 'method') and callable(getattr(self, 'method'))
という事でしょうか?
0299デフォルトの名無しさん
2014/01/29(水) 00:28:39.61Pythonに限らず、他の言語でも
リフレクションが使えれば、privateなメンバへアクセス可能だったりする。
重要なのは、アクセスの完璧な隠蔽ではなく、クラス作成者の意図されない使われ方、
不用意に子クラスや外部から参照されるのを防ぐ、コンパイル時にこれを検出する事。
一応、非公開を意図するなら、名前の頭に アンダースコア 一個付ける慣習があって、
外部から非公開属性の参照は、pylint 等で検査すると警告出してくれます。
0300デフォルトの名無しさん
2014/01/29(水) 00:36:21.52self.aとself.bの存在を調るなら
if hasattr(self, 'a') and hasattr(self, 'b'):
configに"a"と"b"のキーが存在するか調べるなら
if "a" in config and "b" in config:
0301デフォルトの名無しさん
2014/01/29(水) 00:40:53.96hasattrは、実際にはあまり使わなくて、
getattr の第三引数使ったり、実際にアクセスしてみて例外捕まえたりします。
この場合は、これでいいかな
callable(getattr(obj, "method", None))
クラスの場合は、 __getattr__ (PHPで言う __get()) の判定は、出来ないかもしれない。
0302デフォルトの名無しさん
2014/01/29(水) 00:42:41.31ありがとうございます
ちょうど>>298を見てそのようにし、出来ました
しかし、>>297の関数init()内にて
self.key = item
を行わなければいけない部分があります
self.keyのkeyをPythonに"変数"と認識させるにはどのように記述すれば宜しいのでしょうか?
調べても出てこないので参っています
0303デフォルトの名無しさん
2014/01/29(水) 00:56:35.14"変数" の辞書を操作する方法もあるけど、(vars, locals, globals)
状況的に欲してるのは、オブジェクトの属性に設定する方法かな?
setattr(self, key, item)
0304デフォルトの名無しさん
2014/01/29(水) 00:59:58.59インスタンスの属性を動的に設定したいということで良いかな?
代入する属性を動的にしたいということで良いかな?
基本はsetattr()だが、インスタンスには__dict__という属性を保持する辞書がある
代入元が辞書ならself.__dict__.update()に突っ込んだり
既存の属性が必要なければself.__dict__にコピーを代入するという手もある
ちなみにメソッド定義には**kwdsなどと**を付けることで
キーワード引数全てを辞書で取得するという文法もあったりする
0305デフォルトの名無しさん
2014/01/29(水) 01:16:50.27>>> class A: pass
...
# 属性の場合
>>> obj = A()
>>> vars(obj).update(config)
>>> obj.a
10
# 変数の場合
>>> vars().update(config)
>>> a
10
0306デフォルトの名無しさん
2014/01/29(水) 01:31:57.94注意点
__dict__は、__slots__を持つクラスのインスタンスにはない。
vars(obj) は obj.__dict__ を返すので同様。
変数を動的に作る場合は、予めスコープ内で変数を宣言しておかないと、
存在しない変数の参照は、グローバルを参照するようになるので、
グローバルに同名の変数がなければ、エラーになります。
vars() は、locals() ローカルの変数の辞書を返します。
0307デフォルトの名無しさん
2014/01/29(水) 01:56:25.61本当にありがとうございます
今家に帰って布団に入った所なので、また明日試してみます
丁寧に教えていただきましてありがとうございました
0308デフォルトの名無しさん
2014/01/29(水) 16:16:23.98if method in dir(self.__class__): # 関数が存在するか
self.method(item)
という部分があるのですが、これまた変数methodに動的に値が割り当てられないため、
「self.methodというメソッドは存在しません」のようなエラーが出てしまいます
@classmethodを使い、
def m(self, method, **arg):
self.method(arg)
などとし、動的にmethod()を行おうとしたのですが、意味が無いと思いました
何度も申し訳ないのですが、どのようにコードを書けば宜しいでしょうか?
関数のコードです
http://codepad.org/6YDM6gHZ
0309デフォルトの名無しさん
2014/01/29(水) 16:44:42.450310デフォルトの名無しさん
2014/01/29(水) 16:48:00.93この方がいいな
0311デフォルトの名無しさん
2014/01/29(水) 17:13:10.01出来ました
教えて頂きまして本当にありがとうございました
0312デフォルトの名無しさん
2014/01/29(水) 19:39:42.890313デフォルトの名無しさん
2014/01/29(水) 20:23:48.820314デフォルトの名無しさん
2014/01/29(水) 21:03:05.22シンプルを旨とするPythonの精神に合わない
0315デフォルトの名無しさん
2014/01/29(水) 22:38:40.85上に書いてあるような質問も、$this->$keyで済む
誰も迷うことないんじゃないかな
JSはPythonより分かりにくい
と言うか、JSは欠陥言語だろ
今では有志たちが頑張ってくれた遺産があるから何とかなっているが
ま、Pythonは簡単に...の思想のおかげで逆にやりたいことにたどり着くのに時間かかる時がある
0316デフォルトの名無しさん
2014/01/29(水) 22:46:29.26309. 310 は、第一引数にインスタンスを渡してる所から、インスタンス・メソッドとしての呼び出し。
クラス・メソッドは、通常、第一引数にクラスのオブジェクトを渡します。
インスタンス経由でもクラスの属性にアクセス出来る為、
クラス・メソッドにインスタンスを与えても、大抵の場合は動作はしますが、
クラスとインスタンスの区別がついてないので、修正すべき状況です。
312 は、インスタンスからメソッドを得ていて、
対象のメソッドが、クラスメソッド、インスタンスメソッド どちらでも呼べます。
0317デフォルトの名無しさん
2014/01/29(水) 22:53:45.56__getitem__ = object.__getattribute__
でもしたら良い、インスタンスメソッド以外はメタクラスで。
0318デフォルトの名無しさん
2014/01/29(水) 23:21:05.98コレはどこの事を言ってるの?
>>310のこと?
0319デフォルトの名無しさん
2014/01/30(木) 00:32:00.34そこは未束縛の関数を想定してたけど、(Class.method.im_func)
310,311 の場合では杞憂のようでした。
310,311 で、対象がもしクラスメ・ソッドだった場合は、
それぞれ、呼び出し不可・引数が異なる事になりますね。
0320デフォルトの名無しさん
2014/01/30(木) 10:24:10.720321デフォルトの名無しさん
2014/01/30(木) 10:26:01.470322デフォルトの名無しさん
2014/01/30(木) 10:42:53.540323デフォルトの名無しさん
2014/01/30(木) 11:10:16.27子供の教育
0324デフォルトの名無しさん
2014/01/30(木) 11:34:02.99OSはWindows7でpython2.7.6をインストールして
ブログなどを読みながら導入を行っているのですが
pathを通す、という所でつまずいています。
環境変数→"path"を編集して、pythonのディレクトリパスを追加し、
コマンドラインで">>> python"と打つと、
pathが正しく設定されていれば、ヴァージョン情報が表示される、
という認識で合ってるのでしょうか。
確かに編集できていると思うのですが、
コマンドで">>> python"と打っても、
NameError: name `python` is not defined
と返されてしまいます。
何か勘違いをしているのでしょうか。
0325デフォルトの名無しさん
2014/01/30(木) 11:41:09.54それ、できてます。
0326デフォルトの名無しさん
2014/01/30(木) 11:43:07.32IDLE
0327デフォルトの名無しさん
2014/01/30(木) 12:02:36.77やっぱりそんなもんですか
軽くguiプログラミングを学ぶのにはいいと思うんだけど
0328デフォルトの名無しさん
2014/01/30(木) 12:05:09.04Windowsのコマンドプロンプトで"python"と入力すると、
確かにヴァージョン情報などが表示され、起動できていました。
pythonのコマンドラインと勘違いしていました。精進します。
ありがとうございます。
0329デフォルトの名無しさん
2014/01/30(木) 17:15:42.35projectを除くそれぞれのディレクトリ内には空白の__init__.pyを置いています
今、tests内のfoo.pyというファイル内に
from libs.bar import bar
と書いてlibs内のbar.pyファイルを読み込もうとした際、
ImportError: No module named libs.bar
と出てしまいます
しかし、classes内のhoge.pyファイルから同じように
from libs.bar import bar
と書くとちゃんと読み込んでくれます
どのようにすれば、tests内のfoo.pyがlibs.barを読み込んでくれるのでしょうか?
パーミッションはいずれも664となっています
Python2.6です
0330デフォルトの名無しさん
2014/01/30(木) 19:41:54.680331デフォルトの名無しさん
2014/01/30(木) 20:35:47.75ライブラリで副作用のあるコードを含みたくないなら、環境変数 PYTHONPATH
だけど、パッケージにしてるなら classes と同じで読み込めるはず。
各スクリプトを実行してる場所と実行方法は?
./project から python ./tests/foo.py と実行してる?
0332デフォルトの名無しさん
2014/01/30(木) 23:13:31.89ありがとうございます
一応、動作は確認できました
ただし、何故libs内、classes内は
from libs.bar import bar
のような方法で読み込めるのに、tests内はエラーが出るのか謎です
>>331
はい
$ cd $HOME/project
$ python ./tests/foo.py
のような感じでもエラーが出てしまいます
./tests/内のファイルから、./libs/内や./classes/内のファイル、モジュールが読み込めません
./libs/内から./classes/内、またその逆は可能なのですが
0333デフォルトの名無しさん
2014/01/31(金) 01:08:03.95目的がテストの実行という事であれば、setup.py から実行する方法や
(2.7のunittest2以降?) python -m unittest tests で実行する方法もあります、
ImportErrorは、
とりあえず思いつくデバッグ方法。 python -i 付で実行してみて、実行後
>>> import sys
>>> for path in sys.path: print(path)
...
読み込めた時・読み込めなかった時の sys.path を比べてみる。
./classes/foo.py と ./tests/foo.py は、同じ内容をコピーして試してみる。
0334デフォルトの名無しさん
2014/01/31(金) 01:19:18.58$ PYTHONPATH=. python ./tests/foo.py
$ python -mtests.foo
で正常に import 出来るのを確認。 2.6/2.7/3.3/3.4 @ linux
$ python ./tests/foo.py
では ImportError。
./classes/foo.py でも同様の結果になりました。
0335デフォルトの名無しさん
2014/01/31(金) 02:56:36.71僕の名前は...マー坊
って入力させるのやめて下さいッ!
0336デフォルトの名無しさん
2014/01/31(金) 08:18:52.750337デフォルトの名無しさん
2014/01/31(金) 11:31:59.75何のこと?
>>329のこと?
それなら__init__.pyはあるって書いてあるように見えるけど?
0338デフォルトの名無しさん
2014/01/31(金) 11:50:55.28モジュール同士の依存関係強めてどうすんのよ
設計を見直した方が良いレベル
0339デフォルトの名無しさん
2014/01/31(金) 12:36:28.36他のモジュールでも使う→別モジュールとして独立させる
他のモジュールから使うことは無い→インポート先のモジュールに組み込む
0340デフォルトの名無しさん
2014/01/31(金) 18:16:43.92インスタンスメソッドは簡単
foo = Foo()でインスタンスを作成して、Foo.method()で実行
で、残りの静的メソッド2つ
スタティックメソッドは他の言語にもあるように、インスタンスを作成せずに呼び出すんでしょ?
例えばスタティックメソッドであればFoo.method()、PHPの書き方が視覚的に分かりやすいのでPHPであればFOO::method()
でもマニュアルにはFoo().method()でもFoo.method()でもいいと書いてる...(何で?)
じゃぁクラスメソッドって何だってことになるんだけど、第一引数にclsを与えてるってことは、継承時に関係してくるのかなと
selfはそのクラス自体(Foo内であればFoo)
clsは読み込まれた時のクラス(Bar子クラスからFoo親クラスのクラスメソッドを呼び出した場合はcls=Bar)
ってことになるのかな?
混乱してきた.....
どういう時に使い分けるのがいいの?
インスタンスメソッドはガッツリとそのクラスを使いたい時、
スタティックメソッドはどうせそのメソッドだけしか使うこともなく、クラスの呼び出しすらオーバーヘッドを気にしたい時、
クラスメソッドは親クラスのメンバ変数の値を変更したくない時とか?
メリットなど教えてくれない?
0341デフォルトの名無しさん
2014/01/31(金) 18:18:20.940342デフォルトの名無しさん
2014/01/31(金) 19:18:16.31コール方法というよりはインスタンスメソッドはインスタンス変数が必要な処理
クラスメソッドはそのインスタンスを生成するとかクラス変数にアクセスしたい時とかなので概ねその理解でいいと思う
Pythonはclassスコープにアクセスしづらいので…def時デフォルト引数に渡しておくという手もあるけど
スタティックメソッドはあまり使われないかも
Pythonのオブジェクトはこんな実装になってます
ttp://docs.python.jp/3.3/howto/descriptor.html
0343デフォルトの名無しさん
2014/01/31(金) 20:20:40.57https://nose.readthedocs.org/en/latest/index.html
つまり、Unittest継承してるから、Unititestと同じように書けばいいですよ、
そのあとコマンドラインで使う場合は我々の方が色々なオプション提供してるので便利ですよ、
ってこと?
assertXXメソッドのことですら触れられてないけど
0344デフォルトの名無しさん
2014/02/01(土) 00:29:56.70def plus(addend)
return self.class.new(5, 5) <-ココ
end
Rubyで上のようなコードがありますが、Pythonではどのように書けばいいでしょうか?
self.__class__(5, 5)のように考えたのですが、ダメでした
0345デフォルトの名無しさん
2014/02/01(土) 00:33:49.86これで代用できるんじゃないかと試してみます
0346デフォルトの名無しさん
2014/02/01(土) 00:36:39.95setAttr()ではダメでした
クラス内部変数などを変更するには良さそうでしたが、
インスタンス時に渡すという用途ではダメっぽいです
0347デフォルトの名無しさん
2014/02/01(土) 00:54:25.67://codepad.org/ にでもソースの一部を貼りなよ
0348デフォルトの名無しさん
2014/02/01(土) 00:58:11.87他の言語では、(Pythonの)クラス・メソッド相当のものを宣言するのに static キーワードを使うので、
"static" を他の言語のものに当てはめて考えていると混乱するかもしれない。
Pythonのスタティック・メソッドは、クラスに所属してるだけの普通の関数です。
使い分けの基準は、インスタンス変数/クラス変数 へのアクセスの有無にのみ着目して考えてみるといいよ。
0349デフォルトの名無しさん
2014/02/01(土) 02:31:10.68nose では、TestCaseを継承するようなコードは書かず、pythonの assert文を使うのだけど、
一応、assertX 系のメソッドは nose.tools 下にあるよ。
関数のように扱う事になるので、pep8に従い assert_regexp_matches みたいに名前は変わってます。
実際に unittest.TestCaseからメソッドを動的に取り込んでるので、命名規則以外は全く同じ。
代替の方法があるものもあります e.g) assert_raises -> nose.tools.raisesデコレータ
0350デフォルトの名無しさん
2014/02/01(土) 03:08:51.39メソッド内でインスタンスを作成自体は、self.__class__(5, 5) で合ってる。
値を返すのに return を忘れたとか、ESPしてみるけど、どうだろう。
多分やりたい事は、こんな感じの immutable な Point型
ideone.com/4atjqo
0351デフォルトの名無しさん
2014/02/01(土) 05:35:16.74マルチは良くないね
http://toro.2ch.net/test/read.cgi/tech/1383742375/
0352デフォルトの名無しさん
2014/02/01(土) 06:00:42.69yield を使った複数テストは
objectから派生させないと動かない
ことにはめられたわ...
setUp が効かなくなるし
デコレータ嫌いだしはめられたわ...
0353デフォルトの名無しさん
2014/02/01(土) 08:44:41.12見てみたけど、マルチじゃないじゃないか
質問内容が違う
こっちはクラスの話、むこうは関数の事聞いてる
0354デフォルトの名無しさん
2014/02/01(土) 12:20:50.580355デフォルトの名無しさん
2014/02/01(土) 13:31:01.78(3x3のアフィン変換行列をカプセル化したもの)
0356355
2014/02/01(土) 15:29:49.46matplotlib.transforms.Affine2D で良さそう
0357デフォルトの名無しさん
2014/02/01(土) 17:13:21.08ワロタw
0358デフォルトの名無しさん
2014/02/01(土) 18:59:39.40def __init__(self, x):
self.x = x
def back(self, x):
return self.x
abc = ABC(50)
if abc == ABC(50) # ABC(50) == ABC(50)でも同じ結果
print"same"
else:
print"diff"
で"diff"となるけど、Pythonでは新規作成オブジェクト(インスタンス)は別物だとみなされるんだね?
0359デフォルトの名無しさん
2014/02/01(土) 19:11:27.100360デフォルトの名無しさん
2014/02/01(土) 19:15:25.63それがイミュータブルならアイデンティティさえ処理系に依る
0361デフォルトの名無しさん
2014/02/01(土) 19:20:31.12return isinstance(other, type(self)) and self.x == other.x
0362デフォルトの名無しさん
2014/02/01(土) 19:22:37.330363デフォルトの名無しさん
2014/02/01(土) 19:51:43.99win32com
0364デフォルトの名無しさん
2014/02/01(土) 20:21:25.43そうなの
機器に依存するのかぁ
教えてくれてありがと
0365デフォルトの名無しさん
2014/02/01(土) 21:07:27.54for x, y in ((x, y) for x in range(10) for y in range(10)):
pass
これだと1行ですむけど、forが2回も出てきて美しくない気がする
0366デフォルトの名無しさん
2014/02/01(土) 21:10:56.500367デフォルトの名無しさん
2014/02/01(土) 21:21:01.520368デフォルトの名無しさん
2014/02/01(土) 21:29:03.15こんなの何に使うんだって思うものでも
サンプルを見るとヘーっていうのがある
combinationsとか、dropwhileとかは
実務に使わせてもらっている
0369デフォルトの名無しさん
2014/02/01(土) 22:02:14.52pass
0370デフォルトの名無しさん
2014/02/01(土) 22:19:28.95それはこれと同じ
for x in range(10):
y = x
pass
0371デフォルトの名無しさん
2014/02/02(日) 01:10:42.91class b(a):
def __init__(self):
papa = super(b, self)
papa.method("mama") # mamaに浮気がバレた
でいいんですよね?
でも、例えば
from a import a
などしてれば、
class b(a): #または(object)
def __init__(self):
papa = a()
でも大丈夫だと思います
その場合はa()とsuper(b, self)は同じものなのでしょうか?
0372デフォルトの名無しさん
2014/02/02(日) 05:29:20.88状況が良く解らないけど、何か変な事してるような気がする
親クラスのメソッド呼び出しも、self.method()
子クラスでオーバーライドした場合に、親クラスのメソッドを呼び出すには
(クラス大文字で書くけど B > A > object と継承してるとして)
super(B, self).method() もしくは、親を明示する場合は A.method(self)
> a()とsuper(b, self)は同じものなのでしょうか?
superが返すのは、親クラスのメソッドを順に呼び出すための
プロキシ・オブジェクトでインスタンスとは異なります。
0373デフォルトの名無しさん
2014/02/02(日) 05:34:57.15Beautifulsoupでトライしてるのですが、Beautifulsoupが高機能すぎて全然使いこなせてないです。。。
http://dic.nicovideo.jp/a/2ch髢「騾」縺セ縺ィ繧√し繧、繝医�荳隕ァ
0374デフォルトの名無しさん
2014/02/02(日) 05:37:01.60"http://dic.nicovideo.jp/a/2ch関連まとめサイトの一覧" です。
0375デフォルトの名無しさん
2014/02/02(日) 08:55:14.730376デフォルトの名無しさん
2014/02/02(日) 11:38:12.920377デフォルトの名無しさん
2014/02/02(日) 11:41:48.69ちょっとスクレイプってくる
0378デフォルトの名無しさん
2014/02/02(日) 13:11:19.11「http://dic.nicovideo.jp/a/2ch関連まとめサイトの一覧」
です。
>>376
コードを書いて欲しいのではなく、ここにいるような有識者がどんな方法で
アプローチするのか知りたかったというのが正直なところです。
最悪1文字づつ処理すれば、まぁなんとかなるので。
>>377
回答ありがとうございます。
やっぱスクレイプでググって考えろってことだと思うのですが、
スクレイプでググった結果、Beautifulsoup にたどり着いて、
今まさにそこでつまづいてます。。。。
0379デフォルトの名無しさん
2014/02/02(日) 13:21:14.73HTML理解してれば難しいことは何もないと思うんだけどw
データが入ってるタグを抽出して、そこから分割してとれば簡単なような
まぁ、一回だけのデータ抽出なら手動の方が早いかとw
0380デフォルトの名無しさん
2014/02/02(日) 13:37:32.88BeautifulSoup 自体は 要素のリスト・属性・テキストをそれぞれ得る方法3点だけ抑えれば ok
面倒なのは HTML の解析で、空欄やリンクのない項目、htmlタグが混ざった(?)ジャンル名等の例外があるので、
このような適切に意味付けされてない文書では、個別に対処するような泥臭いコードを書くことになります。
# そして、更新があった際も、コードも変更に追従しないといけなくなる可能性が高い。。
0381デフォルトの名無しさん
2014/02/02(日) 13:38:44.31http://dic.nicovideo.jp/a/2ch%E9%96%A2%E9%80%A3%E3%81%BE%E3%81%A8%E3%82%81%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE%E4%B8%80%E8%A6%A7
0382デフォルトの名無しさん
2014/02/02(日) 13:57:19.32Unittest,pyspecとか使って
0383デフォルトの名無しさん
2014/02/02(日) 14:18:21.98* table/tr/td の順に走査
* table は style が border で始まっていなければスキップ
* tr は td の要素数が 2 でなければスキップ
* title ... td[0] を / で split ※ 空の項もある
* url ... 末尾の a 要素の href ※ リンクがない項もある
* genre ... td[1] を / で split
後は、文字コード変換の際に面倒な文字があったり、
ジャンル名に変なタグ紛れてたりする等、細かい点の修正が必要。
codepad.org/1tATXFdI
0384373
2014/02/02(日) 14:22:03.60その形式で貼ったら文字化けしたんですよね。使ってる専ブラの問題かもしれません。
あの後、もう少し調べてみたら、↓で取れそうな気がしてきました。がんばってみます。
100 のとこは 適当に値を入れてあるだけです。。。
url = 'http://dic.nicovideo.jp/a/2ch髢「騾」縺セ縺ィ繧√し繧、繝医�荳隕ァ'
soup = BeautifulSoup.BeautifulSoup(urllib.urlopen(url).read())
soup.findAll('tr')[100].findAll('a')[1] # サイトのURL
soup.findAll('tr')[100].findAll('a')[2] # ジャンル
0385373
2014/02/02(日) 14:25:49.080386デフォルトの名無しさん
2014/02/02(日) 14:27:29.470388デフォルトの名無しさん
2014/02/02(日) 15:26:56.530389デフォルトの名無しさん
2014/02/02(日) 16:01:31.18今携帯からだから該当ページのHTMLが読めない
0391373
2014/02/02(日) 16:35:57.84ありがとうございます。今 >>383 さんがくれたやつを使って考えています。
また、分かんなかったら書き込みますので、その時はどうぞお願いします。
0393デフォルトの名無しさん
2014/02/02(日) 16:37:48.720395デフォルトの名無しさん
2014/02/02(日) 16:46:18.65しかも変換時のエラーを無視するから>>384になる
ちょっとよくない設計だよね
テキストが肝心要なんだから変換に失敗したらエラーでユーザーに気づかせるべきだろうに
0396デフォルトの名無しさん
2014/02/02(日) 17:09:51.640397デフォルトの名無しさん
2014/02/02(日) 17:12:18.86ぜんぜん期待してないけどね
0398373
2014/02/02(日) 17:16:14.13すみません。そうではないです。
単に2chへの書き込みでURLが文字化け
してるだけです。
実際に処理では文字化けとかはしてないです。
0399デフォルトの名無しさん
2014/02/02(日) 17:17:11.530400デフォルトの名無しさん
2014/02/02(日) 17:18:59.390401デフォルトの名無しさん
2014/02/02(日) 18:33:23.34文字列も、ShiftJIS・EUC-JP・中国語・アラビア語・・・言語やエンコードを気にせず操作したい
そんな時にこそ、抽象的な文字列として機能するユニコード文字列の出番なのです
テキスト重視ならユニコード文字列にすべきで、データ重視ならバイト列にすればいい
Python2のstrは、どっちつかずで中途半端な存在だ
0403デフォルトの名無しさん
2014/02/02(日) 19:14:01.500404373
2014/02/02(日) 19:21:54.59というか >>395 さんの作ってくれたやつをいじろうと思ったんですが、
自分の他の処理の方がイケてなさすぎたので、そっちを改修しています。
>>395 さんのコードを見て思ったのですが、↓の処理をあの短時間で思いついてすごいな思っています。
自分が欲しいブロックじゃないとこに style が入ってて、そこを避ければいいなんて、気づきませんでした。
----
if not table.get("style", "").startswith("border"):
----
0406デフォルトの名無しさん
2014/02/02(日) 19:36:24.720407デフォルトの名無しさん
2014/02/02(日) 20:08:40.010408デフォルトの名無しさん
2014/02/02(日) 21:03:29.870409デフォルトの名無しさん
2014/02/02(日) 21:06:19.86特定の IP アドレスにマッチしてたらなにがしかの動作を
するとかメール捨てるとかの, フィルター的なものって
ありませんか?
0410デフォルトの名無しさん
2014/02/02(日) 21:15:16.580411デフォルトの名無しさん
2014/02/02(日) 21:16:20.81class a(object):
def method(self):
return True
にてUnittestを適用する際、多言語(例えばRuby)でassert(a.method())に対応する書き方を教えて下さい
--TestA.py--
self.assertTrue(a.method())でも、
self.assertEqual(a.method(), True)でも、
TypeError: "bool" object is not callable.
と出てしまいます
ちなみにバージョンの関係上assertIs()は使えません
0412デフォルトの名無しさん
2014/02/02(日) 21:45:52.910413デフォルトの名無しさん
2014/02/02(日) 21:51:33.39何で()抜いたのなら動くのかは分からないけれど、Fake Itの時などの利用時に使えるので助かりました
0414デフォルトの名無しさん
2014/02/02(日) 23:11:51.31正数の引数を想定していて、負数が来た時などにraiseした場合、
どんなException/Errorを入れれば良いんですかね?
0415デフォルトの名無しさん
2014/02/02(日) 23:16:01.800416デフォルトの名無しさん
2014/02/03(月) 00:01:39.030417デフォルトの名無しさん
2014/02/03(月) 00:12:22.17自分のPythonのバージョンが2.7ではないため、コンテキストマネージャとして利用できません
with self.assertRaises(myException) as ex:
class.method("number", -1)
self.assertEqual("negative quantity", ex.message)
のようにしたいのです
self.assertRaises(myException, class.method("number", -1))では、
File "/usr/lib64/python2.6/unittest.py", line 335, in failUnlessRaises
callableObj(*args, **kwargs)
TypeError: 'NoneType' object is not callable
とエラーが出てしまいます
また、self.assertRaises(myException, class.method)では、
TypeError: method() takes exactly 3 arguments (1 given)と出てしまいます
例外を発生させてエラーメッセージを取得し、assertEqual()にてエラーメッセージやエラーコードを比較するというやり方はどのようにすればいいのでしょうか?
また、assertRaises()の第3引数はいったい何のためにあるのでしょうか?
無くても問題ないのでしょうが、マニュアルにも詳しく書かれていないので、
仕様がよく分かりません
0418デフォルトの名無しさん
2014/02/03(月) 00:47:00.280419デフォルトの名無しさん
2014/02/03(月) 00:52:10.292.7の unittest2 (2.7では標準の unittest) はバックポートされてるので
インストールさえすれば 2.6 でも利用可能です。
第3引数以降は、関数形式で利用する際の第2引数のcallableに渡す引数
self.assertRaises(RuntimeError, lambda: func(1, 2, n=3))
self.assertRaises(RuntimeError, func, 1, 2, n=3) と同じ。
> 例外を発生させてエラーメッセージを取得し、
> assertEqual()にてエラーメッセージやエラーコードを比較
恐らく try/except 内で assert するという事だろうけど、
テスト内にその様なロジックを書くのは悪手で、
期待する例外が来なければ、未到達のコードになってしまう可能性が出てきます。
assertRaisesRegexp を使うとエラーメッセージのテストが出来ます。@ unittest2
それから、assertTrue は廃止予定のエイリアスなので気をつけて。
0420デフォルトの名無しさん
2014/02/03(月) 01:08:10.28リストでいいのかな?型付Arrayだったら array モジュールがあるけど。
immmurable な値で初期化するなら
arr = [None] * 2
0421デフォルトの名無しさん
2014/02/03(月) 01:17:54.71色々とお答えいただきましてありがとうございました
unittest2をpipからインストールしたら、unittest2をimportしても、PyDevにて使えなくなりアンインストールした事があります
やろうとしている事が出来る関数などがpython2.7から追加とかあり、色々と悩んでおりました
0422デフォルトの名無しさん
2014/02/03(月) 02:43:56.69> assertTrue は廃止予定のエイリアスなので気をつけて。
ごめん、これだけ勘違い。
>>411は、assertTrue が () なしの関数を受け取るわけではなく
.method が呼び出し可能な関数/メソッドではなく、既に bool 値になってるんじゃないかな?
# プロパティとして宣言していたりすると () なしで呼び出される。
0423デフォルトの名無しさん
2014/02/03(月) 06:01:19.06そのクラスの実装 (クラス名が小文字の a) で a.method() だとしたら
表記はクラス・メソッドとしての呼び出しになるんじゃない?
assertTrue(a.method) -> メソッドがbool値として評価されて True になってる可能性もあるので、
テストでは、まず失敗するテストを書いて、期待通りに失敗するのを確認しよう。
0424デフォルトの名無しさん
2014/02/03(月) 13:00:36.09PyDevだったら py.test って選択肢も在
py.test.raises を関数として呼び出した時に、
例外情報を返してくれるので、ここから例外オブジェクトにアクセス可能。
nose もサポートされてるけど、nose.tools.raises はデコレータ用で例外検出のみ。
nose.tools.assert_xxx は unittest 依存。
0425デフォルトの名無しさん
2014/02/03(月) 22:36:32.82ありがとうございます
非常に参考になりました
0426デフォルトの名無しさん
2014/02/03(月) 23:58:10.800427デフォルトの名無しさん
2014/02/04(火) 00:08:24.940428デフォルトの名無しさん
2014/02/04(火) 00:24:34.570429デフォルトの名無しさん
2014/02/04(火) 00:52:16.72俺にはデメリットの方が多いと思ってるから
完全Linux派だな
0430デフォルトの名無しさん
2014/02/04(火) 01:51:56.790431デフォルトの名無しさん
2014/02/04(火) 02:18:29.960432デフォルトの名無しさん
2014/02/04(火) 02:34:55.10#!/usr/bin/env python3.3
とシェル・スクリプトの様に、version指定しておけば、
そのversionの python で起動してくれるようになってる。(PEP 397)
0433デフォルトの名無しさん
2014/02/04(火) 06:45:24.150434デフォルトの名無しさん
2014/02/04(火) 14:29:48.80Pythonの場合って何になる?
main.pyとか?
でもmercurial見てると無いから、どれが最初のファイルなのかなと
0435デフォルトの名無しさん
2014/02/04(火) 15:15:56.960436デフォルトの名無しさん
2014/02/04(火) 15:28:42.76新規 -> PyDevモジュール -> パッケージと名前を入力してファイルを作ったら、
import MySQLdb
がPyDev上で赤いバッテンが付きUnresolved import MySQLdbとなったり、
except MySQLdb.Errorがundfined variableになります
ただし、実行してみるとデータベース接続は出来ているようです
これ何とかならないでしょうか?
sys.pathもしてみましたが、パスは通ってるみたいです
PyDevのモジュール用の設定がおかしいのかもしれません
Eclipseスレの質問かもしれませんが
0437デフォルトの名無しさん
2014/02/04(火) 18:16:17.51例えばsu -> pip install abcをした場合、スーパーユーザーでは
$ python
>>> import abc
なんかでは通っても、一般ユーザーでは通らない場合があります
自分はこのeggファイルのパーミッションが問題なのかなと思うのですが
$ ll ./site-packages
drwx--x--x root root pyabclib-xx.egg-info
drwx--x--x root root abclib
となっています
xで実行が認められてるんで大丈夫じゃないかなと思うんですが
0438デフォルトの名無しさん
2014/02/04(火) 18:51:14.79あとモジュールにxつけても直接実行することが想定されたモジュール以外ほぼ意味ない
0439デフォルトの名無しさん
2014/02/04(火) 19:03:28.83html = """<div id ="hoge">
<div id="foo"><p>埼玉</p></div>
<p>広島</p>
<p>青森</p>
</div>"""
とあった場合、
BeautifulSoup(html).find(id='hoge').p.stringでは埼玉しか取れません
find(id='hoge').findAll('p').stringではErrorです
埼玉、広島、青森を取る方法、また、もし可能であれば埼玉を除いた、広島、青森だけを取得する方法がありましたら教えていただきたいのですが
0440デフォルトの名無しさん
2014/02/04(火) 19:09:10.03hoge使っといて他人に教えろとか馬鹿なの?
早く回線切れば?
0441デフォルトの名無しさん
2014/02/04(火) 19:10:32.150442デフォルトの名無しさん
2014/02/04(火) 19:27:48.170443デフォルトの名無しさん
2014/02/04(火) 19:55:48.61http://www.crummy.com/software/BeautifulSoup/bs4/doc/#method-names
うちのばあい
>>> soup.findAll("p")
[<p>埼玉</p>, <p>広島</p>, <p>青森</p>]
>>> soup.div.findAll("p", recursive=False) # ださい
[<p>広島</p>, <p>青森</p>]
0444デフォルトの名無しさん
2014/02/04(火) 21:10:52.86慣習は知らないけど、.zip アーカイブを直接実行する仕組みでは__main__.py が呼ばれる というのはある。
通常の起動するスクリプトはパッケージ製作者が setup.py に記述するので、そこから辿れます。
後、.eggで実行可能なスクリプトやプラグインだったらegg-infoのentry_points.txtに書かれてる。
>>436 パスの確認はどうやってる? importのチェックは静的解析みたいなので、
もし実行時に sys.path 設定してたら、そのような症状になるかもしれない(推測)。PyDev側で設定が必要。
0445デフォルトの名無しさん
2014/02/04(火) 21:58:21.51これじゃね?
setuptools - Python: Permission issue when installing an egg - Stack Overflow
http://stackoverflow.com/questions/4125237/python-permission-issue-when-installing-an-egg
0446デフォルトの名無しさん
2014/02/04(火) 22:25:50.120447デフォルトの名無しさん
2014/02/04(火) 23:11:11.45サイトの紹介でもいいんだけど
Webで調べるといくつか出てくるけど、どれが本当に汎用性があるのか分からない
自分で関数紹介していながら、ちゃんと動作するか分からないとか、python-chardet使うのがいいとかあるけど
文字コードって他言語でも昔から悩まされてる
0448デフォルトの名無しさん
2014/02/04(火) 23:23:54.49強いて言えば明示的に指定するのがお勧めだ
と身も蓋もない発言を
0449デフォルトの名無しさん
2014/02/05(水) 03:29:44.79ttp://speirs.blog17.fc2.com/blog-entry-4.html
ttp://atomic.jpn.ph/prog/etc/encode.html
ttp://d.hatena.ne.jp/kakurasan/20100330/p1
ttp://pc11.2ch.net/test/read.cgi/tech/1217836194/339
339 :デフォルトの名無しさん:2008/08/23(土) 08:36:00
PythonのUnicodeEncodeErrorを知る
ttp://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
よくまとまってた。あとで読む
0450デフォルトの名無しさん
2014/02/05(水) 04:05:51.01グッドノウハウ集を紹介してやらんと
0451デフォルトの名無しさん
2014/02/05(水) 04:18:16.18Pythonは糞
0452デフォルトの名無しさん
2014/02/05(水) 04:58:57.800453デフォルトの名無しさん
2014/02/05(水) 06:42:58.310454デフォルトの名無しさん
2014/02/05(水) 07:02:50.62後から判定するものじゃないよな?
おかしなことに労力を割くなよ
0455デフォルトの名無しさん
2014/02/05(水) 07:34:53.820456デフォルトの名無しさん
2014/02/05(水) 21:42:28.48元のURI: http://www.atmarkit.co.jp/fdotnet/dotnettips/585regexreplace/regexreplace.html
上のようなHTMLがあった場合に、BeautifulSoupにて本文のみを抜き出すのはどのようにすればよろしいのでしょうか?
a = self.soup.find(text=re.compile("contents"))にて唯一分かりやすい目印のコメント部は取得できます
しかし、本文が、<p>の下にあったり、<td>の下にあったりめちゃくちゃです
a.nextSiblingsにてなんとかなるかなと思ったのですが、エラーが出ました
もしそれが出来れば、b = a.nextSibrings.findAll('p') <-findAll(['p', 'td'])のように2つ条件を入れられるのか分かりませんが...for c in b:c.textでいけるのではないかと思いました
ちょっと分かりにくい文章ですが、
1. このように、あるタグ内の処理ではなく、近くのタグ内の処理をする方法
2. find()などで複数の条件を指定する方法
3. find('div')で<div><p>こんにちは</p></div>の<p>を飛び越えてテキスト部分を取得する方法
を教えていただけないでしょうか?
3.はsoup.find('div').textで"こんにちは"だけ取得できたので複数のネストを越えて大丈夫だと思うのですが、
2.はhtml ="<div><p>こんにちは</p></div><b>こんばんは</b>"
for line in soup.findAll(['div', 'b']): print line.text
で"こんにちは"しか取得できませんでした
1.はダメでした
0457デフォルトの名無しさん
2014/02/05(水) 21:44:58.44相手した奴も昨日みたいに無視するんだろ
死ぬまで一人で作業やってろ
0458デフォルトの名無しさん
2014/02/05(水) 21:48:55.770459デフォルトの名無しさん
2014/02/05(水) 21:55:40.81>>217でやれよ
0460デフォルトの名無しさん
2014/02/05(水) 21:58:08.530461デフォルトの名無しさん
2014/02/05(水) 22:10:05.74色々試してみるんですが、中々上手くいきませんでした
0462デフォルトの名無しさん
2014/02/05(水) 22:59:02.480463デフォルトの名無しさん
2014/02/05(水) 23:49:01.87ソフトウェア開発、サーバー管理に便利なスクリプト、Webのサーバサイドとしてなどあるけど
0464デフォルトの名無しさん
2014/02/06(木) 00:11:49.210465デフォルトの名無しさん
2014/02/06(木) 01:52:02.18一般的な文字列くらいなら使うこと無いんじゃないかと思うんだけど
実際、ある程度長い文字列使って単純な方法でイテレータで回してみたら、呼ばない方が自分の場合早かったんだけど
使うことってある?
0466デフォルトの名無しさん
2014/02/06(木) 07:23:21.08http://vb2py.sourceforge.net/index.html
のVisual Basic to Python Converterを使って変換して、
Pythonで維持していくのはどうなんでしょうか?
だれかこのVisual Basic to Python Converterを使ったことある人いますか?
0467デフォルトの名無しさん
2014/02/06(木) 08:28:20.510468デフォルトの名無しさん
2014/02/06(木) 10:18:10.62用途は、ファイル・オブジェクトを要求する関数のテストに使ったり、
sys.stdout = StringIO() して、出力をキャプチャとか。
今(2.7以降)だと io.StringIO (for unicode) io.BytesIO (for bytes) があるので、
旧 cStringIO/StringIO は、もう使わないかな。
>>463
楽譜解析とDAWのスクリプト
0469デフォルトの名無しさん
2014/02/06(木) 12:39:23.88そういうの聞いたこともなかったから興味あるわ
面白い
0470デフォルトの名無しさん
2014/02/06(木) 14:09:02.860471デフォルトの名無しさん
2014/02/06(木) 17:29:17.29Pythonを普通に書くイメージだけど
0472デフォルトの名無しさん
2014/02/06(木) 17:37:06.25言う結果論だろうけどな。
0473デフォルトの名無しさん
2014/02/06(木) 18:06:26.530474デフォルトの名無しさん
2014/02/06(木) 18:20:18.34DAWはパッと思い浮かばないな。何だろう
0475デフォルトの名無しさん
2014/02/06(木) 19:19:51.06https://wiki.python.org/moin/PythonInMusic
0476デフォルトの名無しさん
2014/02/07(金) 02:00:24.410477デフォルトの名無しさん
2014/02/08(土) 08:02:36.760478デフォルトの名無しさん
2014/02/09(日) 00:20:32.35例えば、スクリプト書いてて、「しまった、try-exceptにするべきだった」となったら、一気にインデント変更しなきゃいけんくなる
0479デフォルトの名無しさん
2014/02/09(日) 00:50:23.78まあ適当にやってるよVimなら矩形選択とか
一行ずつインデントするようなことはしてない
0480デフォルトの名無しさん
2014/02/09(日) 01:25:42.58なるほど
自分はPyDevなんだけど、他の言語と違って綺麗にフォーマットしてくれないし、
インデントが重要な意味を持つから
一気にインデント調整出来たらいいんだけど...
0481デフォルトの名無しさん
2014/02/09(日) 01:39:10.980482デフォルトの名無しさん
2014/02/09(日) 01:43:38.66制御文が入れ子になってるところとかに新たにインデントが必要なコードを追加しようとすると、ものすごく神経を使う。
{} とかでくくる代わりに制御文のケツにコロン必須&ブロックはインデント必須で得られるメリットとデメリット、どっちが大きいのか。
0483デフォルトの名無しさん
2014/02/09(日) 01:50:45.84インデント数スペース2つにしてる自分は特に
80文字で改行が身体に染み付いている自分は、インデントが空文字4文字や8文字では厳しい
0484デフォルトの名無しさん
2014/02/09(日) 02:02:10.24整形するでしょ。
面倒だからやらない、みたいなズボラを許さないのが逆におまえら向きなんだと
思うよ。
あとインデントを変えるのがめんどくさいとか、最初からロジックや作り方が悪い
わけだから、言語への不平より、そっちを直すのが大切。
0485デフォルトの名無しさん
2014/02/09(日) 02:21:23.65Pythonはインデントが意味があるからフォーマットしてくれない
Eclipseがインデントの意味を理解出来ないから
0486デフォルトの名無しさん
2014/02/09(日) 02:30:42.56それを強制されるかされないかで状況は大きく異なる。
そしてPythonはそれを強制する。
> あとインデントを変えるのがめんどくさいとか、最初からロジックや作り方が悪い
> わけだから、言語への不平より、そっちを直すのが大切。
そんなコーダーのコーディングスタイルに敏感に影響されるのがPython。
0487デフォルトの名無しさん
2014/02/09(日) 02:59:03.040488デフォルトの名無しさん
2014/02/09(日) 04:34:44.740489デフォルトの名無しさん
2014/02/09(日) 05:21:03.730490デフォルトの名無しさん
2014/02/09(日) 08:36:41.65スレタイにふさわしい内容だと思ってんのか?
やるならアンチ専用Pythonスレでも立てて
そっちでやれよ。もしくはどっかでツイっとれ。
0491デフォルトの名無しさん
2014/02/09(日) 11:36:34.20普通のWindows的なエディターだとたしかに面倒かもな
0492デフォルトの名無しさん
2014/02/09(日) 11:43:23.390493デフォルトの名無しさん
2014/02/09(日) 11:52:47.21Visual Studio で書いてるから、複数行選択して Tab とか Shift+Tab でインデント上げ下げしてる。
地味に便利だわ。
0494デフォルトの名無しさん
2014/02/09(日) 11:54:22.14自分でTABキーを押すことなんて滅多にないもの
Python始めるならまずVimを覚えなさいってくらいのもの
0495デフォルトの名無しさん
2014/02/09(日) 12:05:04.57http://pydev.org/manual_adv_features.html
0496デフォルトの名無しさん
2014/02/09(日) 12:40:51.74で、それがどうかしたのか?
0497デフォルトの名無しさん
2014/02/09(日) 12:51:34.65死ぬまでインデント上げ下げしててくれ
0498デフォルトの名無しさん
2014/02/09(日) 12:56:04.87「死ぬまでインデント上げ下げしてろ」はいい表現だなw
今後Pythonistaを煽る時に使おう。
0499デフォルトの名無しさん
2014/02/09(日) 13:07:32.55アンカーすら追えないアホだったのか... (w
0500デフォルトの名無しさん
2014/02/09(日) 13:20:18.53lxmlってlxml.etree.fromstring()とlxml.html.fromstring()使う方法があるけど
何が違うの?
英文とかでも見てみたけど良く分からなかった
etreeの場合はxmlもhtmlも扱えるけど、htmlに特化したlxml.htmlの方がhtmlの場合はいいという感じなのかな?
0501デフォルトの名無しさん
2014/02/09(日) 13:54:37.08文書を読み込む時のデフォルトのパーサが違うのと、
HTMLに特化した機能が幾つか追加されてます。iterlinksやcssselector等。
> etreeの場合はxmlもhtmlも扱えるけど
XMLの場合は、書式がきちんとしてないとパース出来ないので、
XHTMLだったら扱えるけど、HTMLはwell-formedな場合でなければ普通は扱えません。
looseなHTMLを読み込む場合は lxml.html を使います。
0502デフォルトの名無しさん
2014/02/09(日) 13:55:55.29教えてくれてありがとう
0503デフォルトの名無しさん
2014/02/09(日) 15:38:18.37全部で1000くらいあるんですが、膨大なせいか100くらいしか取得してくれません。全部取得するには
どうしたらいいですか?
0504デフォルトの名無しさん
2014/02/09(日) 15:41:08.71お前そろそろ死のうか?
0505デフォルトの名無しさん
2014/02/09(日) 16:10:34.79まずあるサイトにアクセスしてhtmlをそのまま保存しよう
そしたらそれを読み込んで正規表現で抽出していけばいい
0506デフォルトの名無しさん
2014/02/09(日) 17:08:55.65どうせチャンクきちんと処理してないんじゃないの?
HTTPの解説ならしてやらんぞ
0507デフォルトの名無しさん
2014/02/09(日) 17:16:58.86よくありがちなコード。
かつreadは応答を全て返すと保証していない点をガン無視した書き方。
0508デフォルトの名無しさん
2014/02/09(日) 17:43:46.92どんなHTMLをどう処理しようとしてるのか解らないと、推測でしか答えようがない。
0509デフォルトの名無しさん
2014/02/09(日) 18:14:42.21> どうしたらいいですか?
ソース貼れよ
0510デフォルトの名無しさん
2014/02/09(日) 18:21:13.630511デフォルトの名無しさん
2014/02/09(日) 18:45:36.230512デフォルトの名無しさん
2014/02/09(日) 18:45:49.460513デフォルトの名無しさん
2014/02/09(日) 18:47:34.58それとも1週間ごとにこのスレの人間全員入れ替わってるわけ?
0514デフォルトの名無しさん
2014/02/09(日) 19:56:27.07つまり、我々の仲間。
仲良くしたってください。
!!!
ここム板だった!
貴族の皆さん、お騒がせしました。
ペコリソコ
0515デフォルトの名無しさん
2014/02/09(日) 21:18:55.270516デフォルトの名無しさん
2014/02/09(日) 21:31:45.32時間がない、は甘え
0517デフォルトの名無しさん
2014/02/09(日) 21:42:01.13労働者を馬鹿にしないでください。
労働階級でも貴族くらい見ればわかります!
0518デフォルトの名無しさん
2014/02/09(日) 22:13:20.22人間として(ry
0519デフォルトの名無しさん
2014/02/10(月) 03:01:02.53論破できなくてアンチスレに追いやろうとしてる時点で負けですよ?
0520デフォルトの名無しさん
2014/02/10(月) 03:51:41.86俺は逆にオススメしないのを言うけど、Ahocorasic
これCore Dumpのエラーが出て使えない
0521デフォルトの名無しさん
2014/02/10(月) 03:52:42.090522デフォルトの名無しさん
2014/02/10(月) 07:32:52.94自動で相手を論破するすごいやつだよ
0523デフォルトの名無しさん
2014/02/10(月) 14:19:13.380524デフォルトの名無しさん
2014/02/10(月) 14:34:02.720525デフォルトの名無しさん
2014/02/10(月) 17:10:36.310526デフォルトの名無しさん
2014/02/10(月) 18:11:37.820527デフォルトの名無しさん
2014/02/10(月) 18:43:58.17ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwww
ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwww
ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwww
ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwww
ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwww
ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwww
ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwww
ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwww
ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwww
ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwww
ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwww
ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwww
ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwww
0528デフォルトの名無しさん
2014/02/10(月) 20:30:45.79君はどんなモジュール使ってるの?
0529デフォルトの名無しさん
2014/02/10(月) 21:42:42.61そんなことではどんどん力が落ちていく
プログラマーならimport使わずに作れ
0530デフォルトの名無しさん
2014/02/10(月) 21:54:11.960531デフォルトの名無しさん
2014/02/10(月) 21:55:18.13標準ライブラリもいつ何があるか分からないからな
全部自分で作るんだよ
0532デフォルトの名無しさん
2014/02/10(月) 21:56:46.610533デフォルトの名無しさん
2014/02/10(月) 21:58:53.98プログラマーなら自分で作れ
0534デフォルトの名無しさん
2014/02/10(月) 22:08:35.170535デフォルトの名無しさん
2014/02/10(月) 22:19:39.58お前は算盤やってろ
0536デフォルトの名無しさん
2014/02/10(月) 23:06:24.01動的言語はPython、静的言語はGoで決まりだ
一生懸命ステマしてたRubyは消え去るのみ、やっぱ本物しか残らないよねー
0537デフォルトの名無しさん
2014/02/11(火) 07:58:36.52日本人にはなじみのない英単語だし
つづりが長すぎて覚えられないんだよね
enumとか短く定義し直して使うことってできないかな?
0538デフォルトの名無しさん
2014/02/11(火) 08:09:30.920539デフォルトの名無しさん
2014/02/11(火) 08:41:40.12return enumarate(x)
これでできたっす
質問にストレートに答えてくれない人には幻滅するっす
0540デフォルトの名無しさん
2014/02/11(火) 09:38:22.45頑張ってくれ
0541デフォルトの名無しさん
2014/02/11(火) 10:22:30.46>つづりが長すぎて覚えられないんだよね
X: enumarate
O: enumerate
0542デフォルトの名無しさん
2014/02/11(火) 10:30:27.10補完してくれないの?
pycharm使ってるけど"e"だけで出てくるよ
0543デフォルトの名無しさん
2014/02/11(火) 15:27:05.06a1 = ["aa", "ab", "ac"]
a2 = ["ba", "bb", "bc"]
......
で、リストary内に、
ary = ["n1" : ["aa", "ab", "ac"],
"n2" : ["ba", "bb", "bc"],
.......]
のようにしたいのですが
ary('n1').append(a1)や
ary('h1') = a1
などではエラーが出ました
0544デフォルトの名無しさん
2014/02/11(火) 15:29:01.32リストじゃなく、辞書でした
0545デフォルトの名無しさん
2014/02/11(火) 15:31:03.95a = {}
b = [1,2,3,4]
c = [5,6,7,8]
a['b'] = b
a['c'] = c
print(a)
0546デフォルトの名無しさん
2014/02/11(火) 15:37:31.76enum = enumerate でもいいっすよ
0547デフォルトの名無しさん
2014/02/11(火) 15:39:13.60>ary('n1').append(a1)や
ary['n1'].append(a1)
0548デフォルトの名無しさん
2014/02/11(火) 15:41:38.32indexingとかじゃ駄目だったの
0549デフォルトの名無しさん
2014/02/11(火) 15:43:17.08ごめんなさい、出来ました
何故エラーになったのか分からなかったのですが、d['n1'] = a1の形で出来ました
お答えいただきましてありがとうございました
0550デフォルトの名無しさん
2014/02/11(火) 15:45:24.46そう思ったからあなたもindexって動詞形じゃなくindexingって名詞形にしたんでそ
0551デフォルトの名無しさん
2014/02/11(火) 15:46:19.07art = {...} 中括弧にするか
ary = dict([...]) この関数の引数にリストを与える
0552デフォルトの名無しさん
2014/02/11(火) 15:49:40.52Note C: Various alternative names were discussed: 以下を参照のこと
http://www.python.org/dev/peps/pep-0279/
0553デフォルトの名無しさん
2014/02/11(火) 17:50:38.15おおすげえ…組込関数を丸ごと別名に代入できるとは
こんなアクロバットなことできる言語が他にあるのか?
mapとかもそうなのだが、関数というものはカッコとペア
で使うものと思うタイプの人間には全く思いつかない応用だ
これなら引数にstart=があるパターンにも対応できる
ありがとうっす
0554デフォルトの名無しさん
2014/02/11(火) 17:59:49.070555デフォルトの名無しさん
2014/02/11(火) 18:31:42.550556デフォルトの名無しさん
2014/02/11(火) 18:36:59.720557468
2014/02/11(火) 19:58:38.33MIDIやOSCは、他の言語でも大抵ライブラリあるんだけど、
楽譜では、LilyPond という綺麗な楽譜を作れるシステムがあって、
それを使った周辺ツールが秀逸 (music21, abjad, mingus 辺り)
DAW では、アプリ側で提供されてるAPI以外特に何も使ってない。強いてあげるなら ctypes
ソフト側で組込スクリプトのサポートがあってもなくても
外からマクロ・ツール等でオートメーションするTipsが横行してたりします。
0558デフォルトの名無しさん
2014/02/11(火) 20:00:31.84関数系では, 古の Lisp の頃から, 当たり前
0559468
2014/02/11(火) 20:07:20.78オーディオ・信号処理方面では、主に C++使ってるけど
Pythonでは、Guido が Audio File Format FAQ の著者だったりして
標準ライブラリにも名残があるね。waveとarray モジュールはよく使う。
scipy.signal辺りは、習得したいと思ってる。
0560デフォルトの名無しさん
2014/02/11(火) 20:18:47.91C言語も関数を変数に代入できるから関数系である
そういうことなんですね
とてもよくわかりました
0561デフォルトの名無しさん
2014/02/11(火) 20:33:04.73割とメジャーな言語で、できないものってあるの?
0562デフォルトの名無しさん
2014/02/11(火) 20:54:08.17そのできた言語を全て上げてみな
そんなにメジャーじゃないだろう
0563デフォルトの名無しさん
2014/02/11(火) 20:58:23.970564デフォルトの名無しさん
2014/02/11(火) 21:05:47.63Cもできないでしょ
printfを変数に代入できるか?
0565デフォルトの名無しさん
2014/02/11(火) 21:13:57.82できる:Python, JavaScipt, PHP, C, C++
できない:Ruby, Smalltalk, Java, C#
はっきり言って、メジャーな言語でも「できない」ものは多い
もちろん、できない言語もメソッドに値を適用(apply)できないだけであって、
クロージャや関数オブジェクトを使うことで同等の機能(=高階関数)は実現できる
ただし、>>546みたいに素直なコードが書けない、ってこと
0566デフォルトの名無しさん
2014/02/11(火) 21:17:27.80>printfを変数に代入できるか?
できる
標準ライブラリの関数 sort が典型例
Cにできないのは無名関数(ラムダ式)だよ
0567デフォルトの名無しさん
2014/02/11(火) 21:37:15.000568デフォルトの名無しさん
2014/02/11(火) 21:40:23.090569デフォルトの名無しさん
2014/02/11(火) 21:43:32.610570デフォルトの名無しさん
2014/02/11(火) 21:44:37.770571デフォルトの名無しさん
2014/02/12(水) 03:09:56.83EUC-JPの文章を渡す場合、文字化けしないためにはどういう風にすればいいの?
先に文字列をdecode('euc-jp')して渡して、出力時に文字化けはしなくなったけど、<xml>部分にencode宣言あった場合エラーが出るようになって...
文字化け対策するにはどうしたらいいの?
lxmlに渡す前と後に処理する方法教えてもらえたらありがたいんだけど
0572デフォルトの名無しさん
2014/02/12(水) 08:08:12.75ネタだろうけど
#include <stdio.h>
int main()
{
int (*va)(char *, ...) = printf;
fprintf(stdout, "%08x\n", va);
fprintf(stdout, "%08x\n", printf);
return 0;
}
0573デフォルトの名無しさん
2014/02/12(水) 12:58:10.04<?xml の encoding という事であれば、
parser = lxml.etree.XMLParser(encoding="euc-jp")
root = lxml.etree.parse(io.open("test.xml", encoding="euc-jp"), parse=parse)
但し、バージョンが古いと非utf-8のXML読み込みでクラッシュする事もあったりした。
0574デフォルトの名無しさん
2014/02/12(水) 16:09:53.07答えてくれてほんとありがとう
もしそれがlxml.htmlの場合はどうなるの?
parse()の引数にencodingがないからエラーが出るけど
基本的にlxmlの文字化け問題って、lxmlに渡す前にdecode('EUC-JP').encode('utf-8')を行った方がいいんだよね?
自分はそれやってるんだけど上手くいってないけど...('A`)
0575デフォルトの名無しさん
2014/02/12(水) 18:41:58.72lxmlの問題じゃなくて 、その前に噛んでたモジュールの問題だった
0576デフォルトの名無しさん
2014/02/12(水) 23:35:27.19>Cにできないのは無名関数(ラムダ式)だよ
C標準仕様には含まれていない(Appleが提案中)けど、
Blocks という仕掛けがクロージャに相当するから、
無名関数を値として引数やリターンで渡せるね
また Blocks はC言語拡張だから、C++/Obj-Cでも利用できる
詳しくは「ブロックプログラミングトピック pdf」でググルと、
Appleによる解説文書(日本語)が読める
0577デフォルトの名無しさん
2014/02/13(木) 03:14:57.200578デフォルトの名無しさん
2014/02/13(木) 16:16:26.43PyCharmってやつが使いやすかったのでおすすめしておく。
UIはモダン&シンプルな感じでゴテゴテしてなくてかっこいい。
動作もeclipseほど重くない。DjangoやFlaskも使える。
クラスとクラスの間は2行開けろ、みたいな
コーディングスタイル(PEP8)のWarningも出してくれるとは思わなかった…。
0579デフォルトの名無しさん
2014/02/13(木) 16:45:50.97自己解決?
[Python-ml-jp 5687] lxmlにて文字化け問題が解消出来ずに困っております。
http://www.python.jp/pipermail/python-ml-jp/2014-February/011179.html
0580デフォルトの名無しさん
2014/02/13(木) 17:10:04.98lxml.html の場合は、デフォルトのパーサ(lxml.html.HTMLParser)では unicode へデコードするだけでいい。
encode utf-8 は不要。
lxml.html でも XHTMLとして扱いたい(xpathで名前空間を使う)場合は、unicodeへデコードして、
parser = lxml.html.XHTMLParser(encoding="euc-jp") とXML同様にパーサを指定。
0581デフォルトの名無しさん
2014/02/13(木) 18:37:03.44交互にスレッドを機能させるようにするにはどうすればいいんでしょう?
0582デフォルトの名無しさん
2014/02/13(木) 19:29:10.31俺もpycharm使ってるけど
やたらメソッドをstaticにしろって薦めてくるのはうざい
0583デフォルトの名無しさん
2014/02/13(木) 19:34:59.760584デフォルトの名無しさん
2014/02/13(木) 19:42:13.180585デフォルトの名無しさん
2014/02/13(木) 19:42:13.230586デフォルトの名無しさん
2014/02/13(木) 20:37:14.20IDEだったら自動でリファクタリングしてくれる機能とか付いてない?
0587デフォルトの名無しさん
2014/02/13(木) 20:56:31.17ちょっと分かる なんかカーチャンに部屋掃除しろと言われてる気分になる
0588デフォルトの名無しさん
2014/02/13(木) 21:27:07.26純粋にスレッド間通信の話だとすると、メッセージ・キューを使うのが定番。
自分で実装するなら、こんな感じ
* 同期キュー (標準ライブラリのqueue) を用意
* スレッドA: キャプチャーを取りその画像の情報をキューに入れる
* スレッドB: キューから画像の情報を取り出して描画
実際は、何かGUIツールキット使ってれば、
大抵はイベント通知の仕組みが提供されてるはずなので、
スレッドを作るのはキャプチャーを取る方だけでいい。
0589デフォルトの名無しさん
2014/02/13(木) 21:55:47.840590デフォルトの名無しさん
2014/02/13(木) 22:20:18.620591デフォルトの名無しさん
2014/02/14(金) 01:06:04.26pygameはjpgを読み込んでくれなくて諦めたんだが。
0592デフォルトの名無しさん
2014/02/14(金) 06:06:22.94変数 str に格納するにはどうすればいいですか?
0593デフォルトの名無しさん
2014/02/14(金) 06:14:34.99printしないで代入すればいい
0594デフォルトの名無しさん
2014/02/14(金) 07:56:33.01ありがとうございます。
0595デフォルトの名無しさん
2014/02/14(金) 15:41:31.78MySQLなどデータベースに接続するのと、ConfigParserにてファイルに接続するのとどっちが早い?
各件のパラメータもたかだか2つ位なんだけど、
それが1000件くらいあると思う
ファイルだとそのコンピューター内に入れてられるからやっぱ早いよね?
DBサーバにわざわざ毎回接続しなくていいし
ファイルが更新されたらイベントドリブンでPythonを実行するサーバに送って上書きするだけだし
タイムラグはあるかもしれないけど
0596デフォルトの名無しさん
2014/02/14(金) 15:54:27.68バイナリで文字列として送るんですか?
0597デフォルトの名無しさん
2014/02/14(金) 15:56:40.00ファイルベースのデータベースとして
sqlite3が有るけどこれではダメかな?
0598デフォルトの名無しさん
2014/02/14(金) 16:07:55.98バイナリはバイナリのまま送ります
0599デフォルトの名無しさん
2014/02/14(金) 16:10:52.71SQLiteって、確かにファイルベースだけど、
それを他のコンピューターに送った場合でも同じように挙動するの?
SQLiteってNoSQL並みに早いようだし、
それならLIKE文などで一致したものを
簡単に検索できるからありがたいんだけど
自分のやろうとしてた事のイメージとしては、
ファイルに各件のパラメータを記述し、
全コンピューターに送信
そしてmemcachedでもなんでもNoSQL系にイベントドリブンで登録
それをTrieなどで総当り検索...
とか思ってたんだけど、SQLiteからすると面倒だよね?
0600デフォルトの名無しさん
2014/02/14(金) 16:13:43.10圧縮出来れば送信時に問題ないかもしれないけれど
0601デフォルトの名無しさん
2014/02/14(金) 16:14:51.510602デフォルトの名無しさん
2014/02/14(金) 16:18:46.34virtualenvの環境に入れる方法ってありますか?
setup.pyがあるものもありますが、エラーがでてしまうのでexeでやりたのですが
0603デフォルトの名無しさん
2014/02/14(金) 16:32:23.370604デフォルトの名無しさん
2014/02/14(金) 20:51:27.930605デフォルトの名無しさん
2014/02/14(金) 21:00:43.96Can I install Python windows packages into virtualenvs? - Stack Overflow
http://stackoverflow.com/questions/3271590/can-i-install-python-windows-packages-into-virtualenvs
0606デフォルトの名無しさん
2014/02/14(金) 21:31:41.66if a == 0: continue
みたいに1行で書くと怒られるんだが、みんな改行してるの?
0607デフォルトの名無しさん
2014/02/14(金) 21:36:11.86できました!
ありがとうございます!
0608デフォルトの名無しさん
2014/02/14(金) 21:37:36.94俺は改行してる
0609デフォルトの名無しさん
2014/02/14(金) 21:44:16.86PEP8 順守して、改行してる
0610デフォルトの名無しさん
2014/02/15(土) 00:53:49.35r = "xyz"
print r in ary
でTrueを出したいんですが、どうすればいいですか?
ary.lower()ではFalseとなってしまいます。
0611デフォルトの名無しさん
2014/02/15(土) 00:56:07.05その中のjqueryで反応するボタン押した後のレスポンスデータ欲しいんですけど
可能ですか?
0612デフォルトの名無しさん
2014/02/15(土) 01:00:16.110613デフォルトの名無しさん
2014/02/15(土) 01:22:55.24http://stackoverflow.com/questions/3627784/case-insensitive-in-python
0614デフォルトの名無しさん
2014/02/15(土) 12:07:09.37↑ ↑ ↑ ↑ ↑
0615デフォルトの名無しさん
2014/02/15(土) 12:25:35.97知り合いは、皆、そこそこの上場企業の社員になったよ
0616デフォルトの名無しさん
2014/02/15(土) 12:27:04.160617デフォルトの名無しさん
2014/02/15(土) 13:58:56.060618デフォルトの名無しさん
2014/02/15(土) 15:36:49.98マニュアル読んでもよく分からないのですが
0619デフォルトの名無しさん
2014/02/15(土) 16:10:27.94True
>>> bool(re.match('b', 'ab'))
False
>>> bool(re.search('b', 'ab'))
True
>>>
matchは探索対象文字列の先頭にパターンがないとマッチしない
searchはどこにパターンがあってもマッチする
0620デフォルトの名無しさん
2014/02/15(土) 17:18:45.58for p in re.findall():
でループするのが一番楽と気づいてから
matchもsearchもめったに使わなくなった
0621デフォルトの名無しさん
2014/02/15(土) 17:35:34.320622デフォルトの名無しさん
2014/02/15(土) 18:36:08.06$ python sample.py
エラーが発生するとターミナル上にエラー内容が出てくるよね
コレをファイル上に書き込みたいんだけど何かいい方法ある?
スクリプト最初にtry-catchを書いて、Exceptionを書き込めば出来るとは思うけど、もっとスマートなやり方が無いかなぁと
0623デフォルトの名無しさん
2014/02/15(土) 18:41:09.35sys.stdout = open("result.txt","w")
0624デフォルトの名無しさん
2014/02/15(土) 18:42:17.610625デフォルトの名無しさん
2014/02/15(土) 18:47:38.14自分としては自分でスクリプト実行するより自動起動させたいと思ってたから、
>>623の方法試してみる
>>624もありがとね
0626デフォルトの名無しさん
2014/02/15(土) 18:54:20.93すなわちsys.stderrに書き込まれると思うけど
あとsys.excepthookにデフォルトハンドラを設定したりもできるよ
0627デフォルトの名無しさん
2014/02/15(土) 21:25:29.91from itertools import takewhile
a = (1,4,5,8,10)
for i in takewhile(lambda x: x in a, range(1,10)):
print(i)
の出力は
1
となるんですが、これは↓と等価ではないのでしょうか?
for i in range(1,10):
if i in a:
print(i)
1
4
5
8
takewhile に限らず、どこか間違っていますか?
0628デフォルトの名無しさん
2014/02/15(土) 21:29:45.59http://docs.python.jp/3/library/itertools.html#itertools.takewhile
0629デフォルトの名無しさん
2014/02/15(土) 21:32:47.38読んでるんですけど、
>>627で書いてるのと等価じゃないんですかそれ?
あと、>>627はほんとは
for i in takewhile(lambda x: x not in a, range(1,10)):
とやりたかったのでしたすんません。
0630デフォルトの名無しさん
2014/02/15(土) 21:35:24.33else: breakが目に入ってれば等価だと思えるはずがない
結論:読んでるつもりなだけで読んでない
0631デフォルトの名無しさん
2014/02/15(土) 21:37:45.51のと
条件が成立しているシーケンスを取り出す
のは全然違うだろ
0632デフォルトの名無しさん
2014/02/15(土) 21:43:41.11すいません、読んでるつもりになってました。
理解しましたありがとうございました。
0633デフォルトの名無しさん
2014/02/16(日) 01:12:26.06DEBUG:root:でばっぐ
INFO:root:いんふぉ
WARNING:root:わーにんぐ
みたいな情報出しても、殆ど意味が無いように思うんですが
皆さんはどのように活用されているのでしょうか?
0634デフォルトの名無しさん
2014/02/16(日) 02:49:41.99それをサーバー(自機)に送信して動画っぽく見せる監視ソフトを作ってみたんだが、遅くて話にならなかった
こういうのはC#で書くべきだと改めて認識できたのは良かったが……
0635デフォルトの名無しさん
2014/02/16(日) 02:56:59.15こういう読み物としても面白い解説サイト、他にないですかね。おしえてくだはい。
Pythonに関係なくてもいいので…。
0636デフォルトの名無しさん
2014/02/16(日) 06:09:19.110637デフォルトの名無しさん
2014/02/16(日) 10:12:46.88小さなプログラムで使ってるとたぶんメリットないよ
規模が大きくなってくるとモジュールごとにフィルターしたりしたくなってくる
linux使ってるならsshdのログとかsyslog見てみ
0638デフォルトの名無しさん
2014/02/16(日) 12:49:57.26コンソールにはinfoレベルで、ファイルにはdebugレベルで、errorレベルはメールするとか
そういうのが必要ないなら全く無用の長物
0639デフォルトの名無しさん
2014/02/16(日) 13:18:29.35round(0.25, 1)
としたら、浮動小数点が原因?で0.2になったので
round(25, -1)
としてみたら、20になりました。
これは関数内で*10^-1して、計算してるのですか?
0.3が得られる方法を教えてください。
0640デフォルトの名無しさん
2014/02/16(日) 13:20:55.50python3.3.3 でやってます!
0641デフォルトの名無しさん
2014/02/16(日) 13:23:11.08頑張ってください
0642デフォルトの名無しさん
2014/02/16(日) 13:30:41.66あれはあれでウンコ仕様だけどね
decimalではroundじゃなくてquantizeメソッドで丸めを行う
0643デフォルトの名無しさん
2014/02/16(日) 13:33:28.01普通の整数演算を完全10進演算にすりゃいいと思うんだが
もうメモリの多寡やCPUの性能を気にする時代でもないだろ
0644デフォルトの名無しさん
2014/02/16(日) 13:37:33.60>>> from decimal import *
>>> d = Decimal('0.25')
>>> d.quantize(Decimal('.1'))
Decimal('0.2')
>>> d.quantize(Decimal('.1'), rounding=ROUND_HALF_UP)
Decimal('0.3')
>>>
な、一目でウンコだろ?
こんなのroundのオプションでやらせろよ
くど過ぎて眩暈がする
0645デフォルトの名無しさん
2014/02/16(日) 14:52:27.29>>> 0.1 + 0.1 + 0.1 == 0.3
False
>>> 0.1 * 3 == 0.3
False
http://docs.python.jp/3.3/tutorial/floatingpoint.html#tut-fp-issues
0646デフォルトの名無しさん
2014/02/16(日) 14:55:46.190647デフォルトの名無しさん
2014/02/16(日) 15:39:58.810648デフォルトの名無しさん
2014/02/16(日) 16:14:26.54フォームだけに特化したものだけでなく、
HTTPの型だとか、ありがちな引数の型とかを検証してくれたりするものがあれば助かるのですが
0649デフォルトの名無しさん
2014/02/16(日) 16:22:10.050650デフォルトの名無しさん
2014/02/16(日) 16:43:49.120651デフォルトの名無しさん
2014/02/16(日) 17:25:56.840652デフォルトの名無しさん
2014/02/16(日) 17:37:42.62Relax NG(RNG) や XML Schema(XSD) みたいな「XMLスキーマ定義言語」と
それらの Validator を調べたらいいんジャマイカと
探せば、きっとPythionバインディングもあるはず....
0653デフォルトの名無しさん
2014/02/16(日) 17:39:11.910654デフォルトの名無しさん
2014/02/16(日) 18:15:29.79日本語のコード番号\uXXとかを判定するとか
後はヌルバイトや特殊文字を除去、javascriptやHTMLタグを除去したりとセキュリティ面でのバリデート
セキュリティ面でのバリデートは絶対に必要だね
0655デフォルトの名無しさん
2014/02/16(日) 18:18:38.71Dive Into HTML5
http://diveintohtml5.info/index.html
0656デフォルトの名無しさん
2014/02/16(日) 18:46:41.89夜も眠れない
0657デフォルトの名無しさん
2014/02/16(日) 18:49:58.900658デフォルトの名無しさん
2014/02/16(日) 18:56:27.47そんなもんVerb == 'GET'でいいんだから
0659デフォルトの名無しさん
2014/02/16(日) 20:18:44.96ゆとりは放置でいいのに
0660デフォルトの名無しさん
2014/02/16(日) 21:21:51.03PHPの方でnullバイト対策とかやってたけど、未だにセキュリティ面での確証が持てない
外部の人間だけでなくて、内部の人間のミスやいたずら等も管理したいからなぁ
何かそういうのでいいのある?
どっか他で聞いたほうがいいかな?
0661デフォルトの名無しさん
2014/02/16(日) 21:27:44.58このスレ PHP の三文字だけでもう勘弁してくれ状態になってる
0662デフォルトの名無しさん
2014/02/16(日) 21:59:19.15>>>if year == 1868
... print u"明治元年"
...
明治元年
というプログラムが本に書いてあったんですが
このプログラムで、u"明治元年"のuはどういう意味ですか?
0663デフォルトの名無しさん
2014/02/16(日) 22:05:48.630664デフォルトの名無しさん
2014/02/16(日) 22:16:44.64みんなのPythonの第2版(あるいはもっと前?)を
ご覧のことと思いますが、第3版も目を通しておくとよいかと。
0665デフォルトの名無しさん
2014/02/16(日) 22:27:49.76https://pypi.python.org/pypi/colander/1.0b1
とか
フレームワークに組み込まれてたら、それ使うんじゃないの
使ったこと無いからしらん
0666デフォルトの名無しさん
2014/02/16(日) 22:38:30.39forで回して作るしかないのでしょうか?
matlabのように
p_list = [ obj_list.('name') ]
という感じで、スマートに書くことはできませんか?
0667デフォルトの名無しさん
2014/02/16(日) 22:49:23.19map()関数
0668デフォルトの名無しさん
2014/02/16(日) 23:09:33.22解答感謝です。
以下のようにして、実現できました。
p_list = map((lambda x: x.name), obj_list)
0669デフォルトの名無しさん
2014/02/16(日) 23:15:35.61関数形式の標準演算子があるoperatorモジュールも併せてどうぞ
0670>>662
2014/02/16(日) 23:31:11.82iPhoneブラウザBB2Cから半角スペース入力したんですが...
二文字以上連続半角スペースは無効なのか。
全角スペースは何故か日本語でも打てない。
Pythonなのではっきりさせておきたいです
>>664
本よくわかりましたねw
初版第三刷(2010年)です
誤植という事ですか?
二版になっても直ってなかったというのはちょっとアレですね。
0671デフォルトの名無しさん
2014/02/16(日) 23:49:58.36↓全角スペースx4
クリップボードに入れておくと捗る
んで>>662は、if year == 1868: ←コロンが抜けているね
0673664
2014/02/17(月) 01:38:26.21言葉が足らずにて失礼しました。
第3版は2012年に発行され、
今後主流になると思われる
Python3系列に基づいた記事が書かれています。
旧版が対象とするPython2系列とは
結構な差異があって、
今回のように参考書を読むときなど注意が必要です。
0674デフォルトの名無しさん
2014/02/17(月) 13:38:20.77一般ユーザの~/.pyenvにインストールしたのですが、rootから見えなくて困っています
rootで入れなおすべきでしょうか
0675デフォルトの名無しさん
2014/02/17(月) 14:42:57.49try:
print"エラー前"
raise(Exception) #エラー発生
print"エラー後"
raise(Exception)
print"あなたエラー多すぎ"
except Exception as e:
func_for_error() #これをエラー発生の度に呼び出したい
上記のようなことはできないのでしょうか?
自分としては、エラー発生後、func_for_error()を実行し、またtryの中に戻る、
そしてprint"エラー後"などを実行させて、エラー後、またfunc_for_error()を実行
と繰り返していきたいのですが
つまり、エラー発生しても上記のprintの内容を全部表示させたいのです
try-catch文でなくとも、何か他の方法でも実現できないでしょうか?
0676デフォルトの名無しさん
2014/02/17(月) 15:42:58.42起動するだけなら
/home/ユーザ/.pyenv/versions/バージョン/bin/python hoge.py
で出来るよ
0677デフォルトの名無しさん
2014/02/17(月) 15:52:11.83>>675
3回try-exceptするんじゃだめなのか
それが嫌なら、エラー回数を引数に持つ関数か状態に持つクラスをつくる
0678デフォルトの名無しさん
2014/02/17(月) 17:03:26.83例外を使う理由は?
そのコードだと raise Exception() する代わりに func_for_error() 呼ぶだけていい。
0679デフォルトの名無しさん
2014/02/17(月) 17:30:25.75上のコードは例えの話でして
一つのファイル上にtry-exceptを何度も入れてもいいんですが、
それだとめんどくさいのと、汎用性がない、
また、予期しないエラーが発生した時に補足できない、
エラー時に処理が止まるというデメリットがあります
それを、その中で発生したエラーは補足しながら別ファイルに書き込みながら、
上から下まで一気にスクリプトを動作させたいと思いまして
全体を
def main():
でくくってしまい、
if __name__=='__main__':
try:
main()
except Exception as e:
func_for_errors()
などで出来ないかなとか考えていました
0680デフォルトの名無しさん
2014/02/17(月) 18:53:46.860681デフォルトの名無しさん
2014/02/17(月) 19:00:55.68じゃあ、これでいいでしょ。だめなの?
正直、 何でtryの中でraise(Exception)してるのかがわからん
0682デフォルトの名無しさん
2014/02/17(月) 19:02:57.52勝手に好きなようにやってくれ
0683デフォルトの名無しさん
2014/02/17(月) 19:26:35.090684デフォルトの名無しさん
2014/02/17(月) 19:56:48.68http://ideone.com/LicRDI
0685デフォルトの名無しさん
2014/02/17(月) 21:56:41.93いや、それはわざと例外発生させて、その後でもprint文を実行させるように出来ないかということでraise()してます
0686デフォルトの名無しさん
2014/02/17(月) 23:22:08.36他にrootでパスを通す、rootで入れなおすなどの方法がありますが(実際にやってないです)
どうするのが適切なのですか?
0688>>662
2014/02/17(月) 23:36:35.08どうもです
自分も感じましたが初版は2系列中心に3系列も補って説明という形式になってて、ごっちゃになっててやりづらいです。
最新の仕様の勉強さえできればいい自分には三版が良さそうです。
0689デフォルトの名無しさん
2014/02/18(火) 00:24:07.92http://ideone.com/LicRDI
じゃ、だめなの?
0690デフォルトの名無しさん
2014/02/18(火) 00:55:41.27t = 'hanako'
db.execute('SELECT * FROM dbname where name = ?', (t, ))
は通るのですが、
s = 'dbname'
db.execute('SELECT * FROM ?', (s, ))
はエラーが出て通りません
いわゆるプリペアドステートメントを実装したいのですが、どのようにすればいいのでしょうか?
0691デフォルトの名無しさん
2014/02/18(火) 01:17:31.15s = 'dbname'
db.execute('SELECT * FROM {}'.format(s))
0692デフォルトの名無しさん
2014/02/18(火) 20:30:31.700693デフォルトの名無しさん
2014/02/18(火) 20:51:12.190694デフォルトの名無しさん
2014/02/18(火) 21:00:44.69commit()を実行すると、ごく稀に予期せぬ
「sqlite3.OperationalError: database is locked」というエラーが発生してcommit()に失敗します。
どういった原因が考えられるでしょうか?
ソースコード中のいろいろなクラスからdb(xxx.sqliteという1つのファイル)にアクセスしていますが、execute('UPDATE or INSERT or DELETE うんたら') の後は必ずcommit() を行っています。dbがlockされているということに心当たりがありません。
どのオブジェクトがdbをlockしているのかを知る方法などないものでしょうか。d=(^o^)=b
ちなみに、dbへの接続はオプションなしでやってます。
conn = sqlite3.connect('xxx.sqlite')
0695694
2014/02/18(火) 21:18:06.91DBアクセスを行う複数のクラスのインスタンスが、
それぞれDBへのコネクション【self.conn = sqlite3.connect('xxx.sqlite3')】を持っています。
具体的には以下のようなコードになってます。
class A:
def __init__(self):
self.conn = sqlite3.connect('xxx.sqlite3')
class B:
def __init__(self):
self.conn = sqlite3.connect('xxx.sqlite3')
class C:
def __init__(self):
self.conn = sqlite3.connect('xxx.sqlite3')
よろしくお願いします。
0696デフォルトの名無しさん
2014/02/18(火) 22:01:02.03答えじゃないけど、1個のDBにConnectionオブジェクトいくつも作らないほうが安全そうに思えてならないけど。
class A:
def __init__(self, conn):
self.conn = conn
def main():
conn = sqlite3.connect('xxx.sqlite3')
0697デフォルトの名無しさん
2014/02/18(火) 22:15:39.93接続を一つにして各インスタンスにはカーソルを与えるとか
isolation_levelをIMMEDIATEとかにするとか
トランザクションをwithステートメントで制御するとか?
0698デフォルトの名無しさん
2014/02/19(水) 20:29:54.92マルチスレッドだったりするのかな?
直接的な解決策ではないけど、接続はひとつにして複数カーソルを扱う方法に +1
アプリケーション内での使い方によっては自分で排他制御が必要
>どのオブジェクトがdbをlockしているのかを知る方法
lockのオーナーまでは解らないけど、
3.2以降なら connectionオブジェクトの in_transaction 属性がある
0699694
2014/02/20(木) 02:30:11.92接続(Connectionオブジェクト)を1つにして、
それをクラス間で共有する形に書き換えてみました。
一見問題なく動いたのですが、とある箇所でlockとは別のエラーが発生します。
というのも、複数のスレッド間でConnectioオブジェクトを
共有しようとすると怒られてしまいます。
「sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in that same thread.」
具体的に言いますと、
今、以下の2つのクラスから成るWebサービスプログラム作っています。
- クラスA:定期的に裏で動作してWeb上のデータを収集しDBに保存する
- クラスB:ユーザーのリクエストに応じて、DBから情報を取り出し提供する
A、B2つのクラスが同時に動作(マルチスレッド?)する際に、
複数スレッド間でConnectionオブジェクトの共有が発生してsqlite3エラーとなってしまいます。
ちなみに、Connectionオブジェクトの共有方法ですが、以下のようにやってます。
config.pyの中で、
CONN = sqlite3.connect('xxx.sqlite3')
app.py(クラスA、Bが含まれるモジュール)の中で、
import config
conn = config.CONN
0700694
2014/02/20(木) 02:31:43.24>アプリケーション内での使い方によっては自分で排他制御が必要
この排他制御ですが、自分には実装方法の検討がつかずちょっと厳しそうです。
となると、こういう場合
SQLiteを使うのはあきらめて、MySQLなどの本格的な(?)DBを使ったほうが賢明ですかね…?
>in_transaction 属性がある
おお、これを使えば問題の切り分けが捗りそうですね。
0701デフォルトの名無しさん
2014/02/20(木) 03:46:26.470702デフォルトの名無しさん
2014/02/20(木) 11:36:54.38print(i)
値でソートした辞書のkeyを順番にとりだしたいのですが、
上のように書くと値しかでず、.items にすると、キーでソートされます。
いい方法ありませんか?
0703デフォルトの名無しさん
2014/02/20(木) 12:07:10.540704デフォルトの名無しさん
2014/02/20(木) 13:50:50.760705デフォルトの名無しさん
2014/02/20(木) 18:35:04.83cur.executemany('INSERT INTO books(title, price) VALUES(%s, %s)',
[('Book A', 1000), # プレースホルダーは%s固定でかつクォーテーション不要('%s'とはしない)
('Book B', 2000), # INSERTは即時反映 (commit不要)
('Book C', 3000)])
上はWeb上で見つけたんだけど、こんなやり方しかないの?
sqlite3みたいに:placeとか?で置き返れたり
これ、SQLインジェクション大丈夫なのかな?
sqlite3モジュールの方ではこのやり方はSQLインジェクションの危険があるとか書かれていたけど
>この時、クエリーを Python の文字列操作を使って構築することは、安全とは言えないので、すべきではありません。
>そのようなことをするとプログラムが SQL インジェクション攻撃に対し脆弱になりかねません。
0706デフォルトの名無しさん
2014/02/20(木) 18:53:01.90書いてあるから嫁よ
あと意地悪な言い方するとプレースホルダーって別に暗黙にエスケープするように保証されてるわけじゃないし
よく確認しなくてどつぼにはまってもしらねーぞ
0707デフォルトの名無しさん
2014/02/20(木) 19:03:02.92Set to 'format' = ANSI C printf format codes, e.g. '...WHERE name=%s'. If a mapping object is used for conn.execute(),
then the interface actually uses 'pyformat' = Python extended format codes, e.g. '...WHERE name=%(name)s'.
However, the API does not presently allow the specification of more than one style in paramstyle.
だ、そうです。
残念でした。
0708デフォルトの名無しさん
2014/02/20(木) 23:10:43.47スケーラビリティではなく、マルチスレッドとロックに関する問題なので、
データベースの変更は根本的な解決にならないと思う。アプリケーションの設計の問題。
可能なら、バックグラウンド処理は別プログラム/別プロセスに別けた方が楽じゃないかな。
書き込み専用の接続は isolation_level='IMMEDIATE' で作る。
読み取り専用の接続は 従来通りに。
====
マルチスレッドで作る場合、
データベース専用のスレッドをひとつ用意、その**スレッド内で**接続を作り
他のスレッドからは同期Queueを通じてスレッドとデータをやりとりするような仕組みを作る
標準ライブラリの queueが使えます。仕組み的には "task queue", "message queue" 辺り。
自分も今sqlite3触ってるとこなので、時間あったらサンプル書いてみる。
0709デフォルトの名無しさん
2014/02/21(金) 01:00:53.30現在時刻を一定間隔で取得して20〜24時以外の時はpassでよいのでしょうか?
0710デフォルトの名無しさん
2014/02/21(金) 01:29:21.88色々とやり方あるけど、最も簡単なやり方としては、sleep()すればいいじゃん
0711デフォルトの名無しさん
2014/02/21(金) 01:48:07.44えっ、escape_stringでいいんじゃないの?
ただ、最新版はそんなこともすることが無いと思うんだけど
皆はどうやってるの?
0712デフォルトの名無しさん
2014/02/21(金) 11:26:21.54できました! ありがとうございます!
0713デフォルトの名無しさん
2014/02/21(金) 16:26:00.44OSのスケジューリング機能を使った方がよくね?
0714デフォルトの名無しさん
2014/02/21(金) 18:40:15.83アプリケーション層では、なるべく自分でescapeみたいなコードは書かない。
ORMやプレースホルダ任せ。ライブラリがきちんとしてるかはテストで確認。
0715デフォルトの名無しさん
2014/02/21(金) 22:07:05.31http://mysql-python.sourceforge.net/
>Parameter placeholders can only be used to insert column values.
insert文だけ
http://dev.mysql.com/doc/connector-python/en/index.html
こっちはバリデートしろとか書いてあるから、たぶん使えないよね
http://legacy.python.org/dev/peps/pep-0249/
これもないっぽいよね
sqlite3しか使わんからわからんけど、mysql使ってる人ってどうしてるんですか?
SQLAlchemy使ってるのかな
0716デフォルトの名無しさん
2014/02/21(金) 22:35:32.280717デフォルトの名無しさん
2014/02/21(金) 23:16:46.89それって危なくないの?
俺PHPからPython来た人間だから、addslashesや各データベースに備わっているescape関数使わんと何か恐ろしい
ORMに頼るのならまぁ分かるが、MySQLdbそのまま使って変数をそのままSQL文に入れるとか常軌を逸してると思うんだけど
http://www.php2python.com/wiki/function.addslashes/
こういうのを変数前にかませるべきだと思うんだけど
Pythonの仕様はまだ良く分かってないから何とも言えんけど、やっぱやった方がいいと思うんだけど
0718デフォルトの名無しさん
2014/02/21(金) 23:33:23.19>>714みたいなのが通例で確実じゃないか?
0719デフォルトの名無しさん
2014/02/21(金) 23:39:53.48俺もそう思う
>>717は>>714の
>ライブラリがきちんとしてるかはテストで確認。
っていう部分どう認識してるんだ
0720デフォルトの名無しさん
2014/02/21(金) 23:51:03.360722デフォルトの名無しさん
2014/02/22(土) 08:54:29.150723デフォルトの名無しさん
2014/02/22(土) 11:07:45.100724デフォルトの名無しさん
2014/02/22(土) 11:37:06.48どっちもwithの中を実行した後に、pageを閉じるっていう動作をするみたいだけど。
with closing(urlopen('http://www.python.org')) as page:
for line in page:
print(line)
with urlopen('http://www.python.org')) as page:
for line in page:
print(line)
0725デフォルトの名無しさん
2014/02/22(土) 12:06:32.710726デフォルトの名無しさん
2014/02/22(土) 12:14:41.050727デフォルトの名無しさん
2014/02/22(土) 12:28:27.30Python3.xなら特に違いはない
2.xだとurlopenで戻されるオブジェクトはwith構文に対応していないから
下は__exit__が見つからなくて実行時エラーを起こす
0728デフォルトの名無しさん
2014/02/22(土) 12:29:31.65contextlib.closingだよ
0729デフォルトの名無しさん
2014/02/22(土) 14:36:40.87危険だと思うコードがあるなら、実際にテストを書いて試してみよう。
何か誤解してるけど、escapeしてない値を直接クエリに組み込んでる訳ではないよ。
>>715 の一番下のリンクに書いてある
Pythonの Database API execute(query, parameters) の項では
プレースホルダは、paramstyleの何れかが使える。値のエスケープについては、
注釈[5] によると、(parametersで渡す値には)エスケープを要求すべきでないと書かれてる。
> The client should not be required to "escape" the value so that it can be used
> - the value should be equal to the actual database value.
プレースホルダ内でのエスケープの扱いについては明言された文は見つけられなかったけど、
何れにしても実装が規格に準じてるかどうかは別の話なので、テストは必須。
0730デフォルトの名無しさん
2014/02/22(土) 14:39:02.10なるほどー。ありがとう。
0731デフォルトの名無しさん
2014/02/22(土) 15:06:27.370732デフォルトの名無しさん
2014/02/22(土) 15:39:35.92ありがとう
そしたら、PEP249実装してるhttps://pypi.python.org/pypi/PyMySQL/0.6.1使うのが今のとこいいのかな
0733デフォルトの名無しさん
2014/02/22(土) 19:34:25.600734デフォルトの名無しさん
2014/02/23(日) 10:09:29.91不要に成ったかもしれないけど、マルチスレッドでSqlite3 database を扱うサンプル
ideone.com/GDlzCR
0735デフォルトの名無しさん
2014/02/23(日) 14:52:47.16同一ネットワーク上にあるpcやスマホのipアドレス、macアドレスを取得したいのですがどのような方法があるのでしょうか?
バージョンは2.7です
またこのような処理は一般的にどのような名称なのでしょうか?トポロジー?
0736デフォルトの名無しさん
2014/02/23(日) 15:26:37.27使うならsocketだろう
トポロジー?学がないから知らね
0737デフォルトの名無しさん
2014/02/23(日) 15:44:07.390738デフォルトの名無しさん
2014/02/23(日) 16:57:53.68>>737
ありがとうございます。
arpで完成しました
0739デフォルトの名無しさん
2014/02/23(日) 18:02:59.97この「*args」ってなんなんでしょ?
0740デフォルトの名無しさん
2014/02/23(日) 18:14:47.65可変長引数
0741デフォルトの名無しさん
2014/02/23(日) 18:32:28.740742デフォルトの名無しさん
2014/02/23(日) 20:30:46.70テキストファイルを読んで加工してまたテキストファイルに
吐き出すような用途でPythonを使う限りは
知らなくても構わんですか?
0743デフォルトの名無しさん
2014/02/23(日) 22:07:02.870744デフォルトの名無しさん
2014/02/23(日) 22:19:49.94ありがとうございます!
こういう実用的なサンプルコード、ありがたいです。
0745デフォルトの名無しさん
2014/02/24(月) 01:16:35.930746デフォルトの名無しさん
2014/02/24(月) 01:37:58.78rangeで...無理か
0747デフォルトの名無しさん
2014/02/24(月) 01:41:52.700748デフォルトの名無しさん
2014/02/24(月) 01:42:20.08でいけるみたいよ
0749デフォルトの名無しさん
2014/02/24(月) 02:20:24.810750デフォルトの名無しさん
2014/02/24(月) 04:20:53.740751デフォルトの名無しさん
2014/02/24(月) 06:00:50.71ありがとうございました
0752デフォルトの名無しさん
2014/02/24(月) 10:31:55.27例えば下記を実行すると、
import math
i = 4481.4*430
print i
print int(math.floor(i))
↓
1927002.0
1927001
という風に、1の位が変わってしまいます。。。どうすればよいでしょう?
本当に困っているので助けてください><;
0753デフォルトの名無しさん
2014/02/24(月) 11:39:37.92>>> 4481.4*430
1927001.9999999998
>>> math.floor(4481.4*430)
1927001
0.9999999998の差を許容できるなら、1も許してやれよ
0.0000000002の拘りは何の為に必要なんだ
0754デフォルトの名無しさん
2014/02/24(月) 12:08:44.64まず脱げ
0755デフォルトの名無しさん
2014/02/24(月) 12:47:01.66科学技術の計算だったら
有効数字とか有効桁数とかでググれ
浮動小数点数の掛け算の後の
丸めかたについて定石がある
0756デフォルトの名無しさん
2014/02/24(月) 12:52:33.03まじれすすると
1927002.0 も
1927001 も
どちらも間違いです
0757デフォルトの名無しさん
2014/02/24(月) 20:59:47.86とりあえず、floatだとアレなんですね><;
decimal使って解決しました><;
0758デフォルトの名無しさん
2014/02/24(月) 21:08:15.04金融などのクリティカルな分野にはPythonは恐くて使えないねえ
0759デフォルトの名無しさん
2014/02/24(月) 21:44:07.37Django、TurboGearなど
人気度、知名度ではDjangoだろうけど
ライブラリ代わりではTurboがいいだろうし
他に何かいいの出てきてない?
0760デフォルトの名無しさん
2014/02/24(月) 21:46:02.35うちだとまず無理だわ
0761デフォルトの名無しさん
2014/02/24(月) 23:22:00.950762デフォルトの名無しさん
2014/02/25(火) 00:01:59.350763デフォルトの名無しさん
2014/02/25(火) 02:51:07.400764デフォルトの名無しさん
2014/02/25(火) 05:39:40.290765デフォルトの名無しさん
2014/02/25(火) 07:01:21.840766デフォルトの名無しさん
2014/02/25(火) 07:06:11.34すごいバカ
レジスタなんたらフォンノイマンなんたら知らなくてもプログラムできるし、
「そういう人は電子レンジで猫なんたら」
ってなんて馬鹿な飛躍。
きみ、専門学校出のおばかさん?
0767デフォルトの名無しさん
2014/02/25(火) 07:17:51.650768デフォルトの名無しさん
2014/02/25(火) 07:18:49.02君は言語空間の原理と実装の実際の区別がついていないおばかさんなんだよ
だから専門学校レベルか、三流大学ベルだね
例えばLispの関数carを
ドシロウト向けの嘘の解説として
「関数carはリストの一番目の要素を得る関数」
なんていう。
(car ’(1 2 3 )) → 1
しかし、、言語の原理から言うとそれは「S式操作上ではそう言える」だけであって、じつは
「関数carはCellのCAR部のポインターが指すものを示す関数」
となる。
プログラムリストとして表れるS式は
アトムまたはリストであるが、言語の原理としては実はリストなどそんざいせず、あくまでアトムと(コンス)セルがあるのみである云々云々。
そこまでで良いのであって、それ以上ポインターのフォンノイマン型コンピュータにおける実装の実際など知らなくてよろしい。
土方制御プログラムをアッセンブリー言語で組むのとは違うからな
0769デフォルトの名無しさん
2014/02/25(火) 07:22:29.42お前も中学生くらいになったら分かるよ。
お前が結局「知らなくてもプログラミングできる」の一点張りなこともな。
電子レンジの仕組みなんから知らなくても調理はできるからな。
0770デフォルトの名無しさん
2014/02/25(火) 07:25:52.49隠蔽もしらなそうだな
馬鹿丸出し
あ、パイソンスレか
じゃ、バカ多くてもしかたない
わはは
0771デフォルトの名無しさん
2014/02/25(火) 07:27:09.07内容は肯定も否定もしないけど、Python超初心者スレなので
例はlispじゃなくて超初心者向けのPythonで書いて欲しい……
0772デフォルトの名無しさん
2014/02/25(火) 07:28:27.65標準レベルの知識を要求される場面に遭遇するこはない。
またドカタから脱出する機会めない。
よって計算機の仕組みを知る必要はない。』
これが一番説得力あるしケイサンキノシクミガーを論破できるだろ。
0773デフォルトの名無しさん
2014/02/25(火) 07:30:42.28トルネード!
0774デフォルトの名無しさん
2014/02/25(火) 07:37:14.510775デフォルトの名無しさん
2014/02/25(火) 07:39:13.22トルネード(tornado)
0776772
2014/02/25(火) 07:49:57.22ほら、反論してみろや。
0777772
2014/02/25(火) 08:14:06.520778デフォルトの名無しさん
2014/02/25(火) 08:23:06.17Lisp使いには、Emacs・Vim使いと同様に
変な特権意識持ってる香具師がいるんで
初心者スレで暴れることが快感なんだろう
0779デフォルトの名無しさん
2014/02/25(火) 08:24:02.030780デフォルトの名無しさん
2014/02/25(火) 09:07:45.230781デフォルトの名無しさん
2014/02/25(火) 10:09:40.030782デフォルトの名無しさん
2014/02/25(火) 10:43:46.03おやおや知的大衆層まるだしの表現だな
低偏差値層の興奮は恥ずかしいぞ
わはは
ヴァカの相手するわけ無いだろ
一人で踊ってなさい
0783デフォルトの名無しさん
2014/02/25(火) 11:09:56.850784デフォルトの名無しさん
2014/02/25(火) 13:41:38.44案の定...
0785デフォルトの名無しさん
2014/02/25(火) 15:32:04.97他の言語を嫌悪する*\(^o^)/*
それぞれ使い道があるでしょ
デスクトップアプリはJavaには不向きで
起動時に大量のクラス読み込むので遅くてイライラ、でもサーバアプリにすればずっと立ち上がってるし快適
何十年も運用するなら昔なら軍用のAda、今どきならHaskell?
Pythonは正直大規模開発やサーバには向かんと思う。
でもIPythonみたいに簡単にノート使えて小さなモジュール単位で結果みながら便利に使える自分の道具には最適*\(^o^)/**\(^o^)/*
Sage Mathとか色々な言語で作られた数字ツールをPythonでまとめた傑作だと思うよ
0786デフォルトの名無しさん
2014/02/25(火) 16:07:04.58PHPでいう、if(isset($var)){}のような事をしたいのですが
0787デフォルトの名無しさん
2014/02/25(火) 16:41:02.22if "value" in vars(): # @see also builtin-in locals(), globals(), hasattr()
value = 0
のような事は出来るけど、このようなコードは、
静的検査で困る事が多いので、なるべく避けた方がいい。
value = None
if value is not None:
...
と未設定値としてNoneを利用するとか、関数のデフォルト引数を使って工夫したり、
状況によっては、辞書の利用の方が適切かもしれない。
本当に未定義な名前を参照する可能性がある状況なら、NameErrorを捕まえる。
例)
try: # for 2.x/3.x compatibility
range = xrange
except NameError:
pass
0788デフォルトの名無しさん
2014/02/25(火) 16:50:00.580789デフォルトの名無しさん
2014/02/25(火) 16:55:06.47もう一個はどうするの?
0790デフォルトの名無しさん
2014/02/25(火) 17:10:34.66>>> b = 6
>>> hasattr(__import__('__main__'), 'a')
True
>>> hasattr(__import__('__main__'), 'b')
True
>>> hasattr(__import__('__main__'), 'c')
False
0791デフォルトの名無しさん
2014/02/25(火) 17:13:29.23同じような用途でよく使われるので、
参考に調べてみてはと思って書き流しただけ。
モジュール内のグローバル変数が想定だけど、
一応、import __main__ で、自分自身をモジュールとして参照できる。
用例) ./Lib/smtpd.py
0792デフォルトの名無しさん
2014/02/25(火) 17:14:13.540793デフォルトの名無しさん
2014/02/25(火) 17:37:15.140794デフォルトの名無しさん
2014/02/25(火) 21:41:15.310795デフォルトの名無しさん
2014/02/26(水) 20:20:48.07Apacheとかと簡単に連携できて、レンダリングも簡単なのがいいんだけど
0796デフォルトの名無しさん
2014/02/26(水) 21:44:57.000797デフォルトの名無しさん
2014/02/26(水) 21:47:37.44pystache
テンプレートエンジンはApacheとは関係ないと思う
0798デフォルトの名無しさん
2014/02/26(水) 22:14:32.900799デフォルトの名無しさん
2014/02/27(木) 00:22:35.540800デフォルトの名無しさん
2014/02/27(木) 00:58:57.550801デフォルトの名無しさん
2014/02/27(木) 02:25:40.46自分で、Apacheとmod_wsgi使って書いてる?
それともDjangoなどフレームワークを利用してる?
0802デフォルトの名無しさん
2014/02/27(木) 05:51:50.610803デフォルトの名無しさん
2014/02/27(木) 07:24:50.79俺に逆らうとおまえら
市ぬぞ
0804デフォルトの名無しさん
2014/02/27(木) 07:53:03.14Apache/nginx-gunicorn/uWSGI-flask+jinja2/django
でしょうね。
アプリケーションサーバーを切り離さないとスケールしにくいので。
個人的なものは手軽さが大事なので
・bottleのみ
・nginx-bottle+flup
で作ります。
手狭になったら最初の構成で書き直します。
0805デフォルトの名無しさん
2014/02/27(木) 11:05:13.73Apache/mod_wsgi/Python3
0806デフォルトの名無しさん
2014/02/27(木) 13:21:48.420807デフォルトの名無しさん
2014/02/27(木) 13:45:31.500808デフォルトの名無しさん
2014/02/27(木) 14:43:48.670809デフォルトの名無しさん
2014/02/27(木) 20:47:03.490810デフォルトの名無しさん
2014/02/27(木) 21:32:18.44randomモジュールでは、Randomインスタンスの初期化時に呼ばれてるので、
明示的にseedを設定する必要がある用途でなければ、自分でseedを呼ぶ必要はない。
0811デフォルトの名無しさん
2014/02/28(金) 12:28:21.02~/projects/hoge というディレクトリがあったとして
~/projects/hoge$ pyvenv pyvenv
とやってます。プロジェクトディレクトリ外に適当なディレクトリ作ったほうがいいんでしょうか?
たとえば
mkdir ~/pyvenv として
~/pyvenv$ pyvenv プロジェクト名
みたいな。
0812デフォルトの名無しさん
2014/02/28(金) 17:34:02.57virtualenvwrapper使ってると後者になるけど、
プロジェクト単位の環境構築では zc.buildout の併用が適してるかも。
プロジェクト下にvenv環境を構築すると、
* プロジェクトのバージョン管理
環境を管理対象に含めないような設定をする事になると思うが、
その部分はユーザの環境依存な設定になるので、レポジトリ公開する場合は好ましくない。
* プロジェクトを別環境でテストする (tox)
* 複数プロジェクトで同じ環境を使いたい
のような場面で、困ったり手間だったりする事があります。
0813デフォルトの名無しさん
2014/02/28(金) 17:42:11.65おっぱい好きだし
0814デフォルトの名無しさん
2014/02/28(金) 18:37:35.29キチガイHOGE厨は早く消えろ
0815デフォルトの名無しさん
2014/02/28(金) 22:27:53.430816デフォルトの名無しさん
2014/03/01(土) 10:10:27.73/usr/lib64/python2.6/site-packages/は通っていません
これはsys.path.append('/usr/lib64/python2.6/site-packages/')をスクリプト内で毎回記述する方法以外はないのでしょうか?
/usr/lib64/python2.6/site-packages/内も読み込んでデフォルトで欲しいのですが、何か他の方法があれば教えていただけないでしょうか?
Pythonはデフォルトで入っていたか分かりませんが、yum install pythonは行いました
0817デフォルトの名無しさん
2014/03/01(土) 10:16:26.90/usr/lib64/python2.6/site-packages/も読み込まれていました
0818デフォルトの名無しさん
2014/03/01(土) 10:57:14.90http://docs.python.jp/2.7/tutorial/modules.html
0819デフォルトの名無しさん
2014/03/01(土) 20:02:13.35ありがとうございます!
プロジェクトディレクトリに含めるのはやめることにしました。
0820デフォルトの名無しさん
2014/03/02(日) 02:17:22.00tkinter8.5
Entryに英数の入力はできるのですが、日本語入力ができません。
何か方法ってあるんでしょうか?
0821デフォルトの名無しさん
2014/03/02(日) 13:37:36.57特に何も。最近は、普通に出来てる(win32,linux)けど、環境によって違ったりするのかな…
考えられる原因は、組み込まれてるTcl/Tkのバージョンが古いとか
0822デフォルトの名無しさん
2014/03/02(日) 13:59:02.99京都は昔からクソだし
時間の無駄だ
家でプログラミングしてる方がずっとマシだ
0823デフォルトの名無しさん
2014/03/02(日) 14:06:25.32みさき公園で海見ながらプログラミングすると癒されるよ
0824デフォルトの名無しさん
2014/03/02(日) 14:17:42.47いいかも
0825デフォルトの名無しさん
2014/03/02(日) 14:23:28.20南海に乗って出掛けるのおすすめ
0826デフォルトの名無しさん
2014/03/02(日) 22:31:49.300827デフォルトの名無しさん
2014/03/02(日) 22:58:25.580828デフォルトの名無しさん
2014/03/02(日) 23:59:13.93BはAで出力したcsvデータをreadしcsvとしてダウンロードさせるものです。
("Content-Type: application/download")
proc =subprocess.Popen("python ./download.cgi",shell = False).communicate()
上記のようなコードを書いたのですがcsvとしてダウンロードされません。
0829デフォルトの名無しさん
2014/03/03(月) 00:01:29.93標準出力の形で出力されたため、Bの読み込みはできているようです。
ただ、csv形式でダウンロードされないと意味がありません。
subprocess.Popenでcgiとしての動作をするよう呼び出すにはどうしたら良いのでしょうか。
普通にform actionでコールした場合はcsvで出力されます。
0830デフォルトの名無しさん
2014/03/03(月) 00:20:48.67Aでファイルにcsvの中身出力してるなら
Bではhttpヘッダの後にそのファイルの中身読んで送ればいいんじゃねーの
0831デフォルトの名無しさん
2014/03/03(月) 00:27:15.32ご回答ありがとございます。
まさしく仰るとおりB側ではContent-Typeをapplication/downloadとして
ファイルを読み込みし、ダウンロードさせています。
BをCGI Aのform actionで呼び出した時はcsvのダウンロードが始まるのに
subprocessで呼び出した時はcsvダウンロードではなく標準出力?
での処理が始まっているようで困っています。
0832デフォルトの名無しさん
2014/03/03(月) 03:11:41.74サブ・プロセスのstdoutに出力されてしまってるからかな
* そのままstdoutに流してもいいなら Popen の引数に stdout=sys.stdout を追加。
* communicateの戻り値でcgiの出力するデータを受け取りたいなら stdout=subprocess,PIPE を指定
0833デフォルトの名無しさん
2014/03/03(月) 11:43:39.54別言語なのかなと思ったけど、よく読むと両方Python
わざわざ別プロセスにして呼び出さなくても、
両方から使う部分を関数にし、モジュールに纏めて、importして使おう。
0834デフォルトの名無しさん
2014/03/03(月) 22:29:55.63tkで作ったGUIプログラムの方はginnieのツールにPythonw.exeを登録して
ツールの実行で一発起動できるのですが、CUIのプログラムを同じように
python.exeで登録しても、一瞬起動するだけで、落ちてしまいます。
どうしたら、コマンドラインが実行しても落ちないようにできますか?
よろしくお願いいたします。
0835デフォルトの名無しさん
2014/03/03(月) 22:47:44.88コマンドプロンプトが開いて実行して終了してコマンドプロンプトが閉じてるだけじゃなくて?
0836デフォルトの名無しさん
2014/03/03(月) 23:06:02.90CUI用スクリプトにAny keyに準じた処理を書くとウインドウが閉じない
2.xでは
raw_input('Press enter to continue...')
3.xなら
input('Press enter to continue...')
0837デフォルトの名無しさん
2014/03/04(火) 03:21:07.37pythonのオプションに -i を付ける
(スクリプト実行した後にインタラクティブ・モードになってプロンプトが維持される)
0838デフォルトの名無しさん
2014/03/04(火) 09:02:49.29>>837そのやり方で試してみると、python立ち上げてウインドウが落ちない
のですが、-iのあとに-i%f%nなどとパラメータを設定すると落ちてしまいます。
どんなコードでも実行後、処理が終わってウィンドウが閉じないようにしたい
のですが、どうしたらよいですか?
それはginnieのツール設定でできることなのでしょうか?
0839デフォルトの名無しさん
2014/03/04(火) 10:39:03.830840デフォルトの名無しさん
2014/03/04(火) 10:39:11.210841デフォルトの名無しさん
2014/03/04(火) 12:10:41.180842デフォルトの名無しさん
2014/03/04(火) 14:24:34.70試してみた。パラメータの所に -i %f で出来たよ。
パス内のフォルダ名にスペースとか含まれてない?
ginnie側のコマンド呼び出しで、パス等が適切にエスケープされてない可能性がある。
0843デフォルトの名無しさん
2014/03/04(火) 16:04:18.57Cythonってのを使ってみたくて、MinGWとCythonのインストールはできたはずなんだけど
http://docs.cython.org/src/tutorial/cython_tutorial.html
ここの最初のhello worldで、
UnicodeDecodeError: 'cp932' codec can't decode byte 0xef in position 0: illegal multibyte sequence
というエラーになってしまう。
どうしたら良いのでしょう?
0844デフォルトの名無しさん
2014/03/04(火) 16:19:52.420845デフォルトの名無しさん
2014/03/04(火) 16:46:35.41エディタの文字コードと全角で Hello World 入力しちゃってないか確認
0846デフォルトの名無しさん
2014/03/04(火) 16:53:05.450847デフォルトの名無しさん
2014/03/04(火) 17:08:52.91>パラメータの所に -i %f で出来たよ。
試してみたら、見事出来ました!!
2ちゃんで聞いても、馬鹿にされるだけで、きちんと教えてくださる方は
少ないので、大変感謝しています。ぶっちゃけ、\1000位ならお金を
払ってでも教えてほしいと思ってたぐらいです。本当に有難うございます。
わざわざ試してくださったようで、本当にお手間を取らせました。
有難うございますm(_ _)m
0848デフォルトの名無しさん
2014/03/04(火) 18:34:19.57なんでも聞いていいよ!
柔しい俺
0849847
2014/03/04(火) 21:57:07.02お言葉に甘えて。
入出力をコマンドラインにした場合についてなのですが、
raw_input()で取得した文字列は、一体どういう状態で取得されているので
しょうか?
コマンドラインで使用している入出力がcp932なら取得した文字列もcp932に
なるのでしょうか?また、cp932とShift-JISやUTF-8とはどう違うのでしょうか?
私の環境では
#coding:Shift-JIS
としてファイルをShift-JISで保存し、
X=raw_input()
if X== "てすと":
print u"おっけ"
などとすれば上手く想定通りの動作をするのですが、
Shift-JISをUTF-8に全て書き換えて保存しても、同じことができません。
これはコマンドラインで使用している文字がShift-JISになっているということでしょうか?
どうも日本語の処理がいまいち理解できません。
長いですが、宜しくです。
0850デフォルトの名無しさん
2014/03/04(火) 22:30:39.170851デフォルトの名無しさん
2014/03/04(火) 22:32:24.81それどころかshift_jisもutf_8も存在しない
エンコーディングはstrをどう解釈するかの指定子だから
raw_inputで得られる物は単なるstr
0852デフォルトの名無しさん
2014/03/04(火) 22:34:15.52raw_input()は実行環境に依存する
"てすと"は#coding:Shift-JISに依存する
でも、Python3使えば文字コードに悩まされることないよ
0853デフォルトの名無しさん
2014/03/04(火) 22:36:52.82何で?
0854デフォルトの名無しさん
2014/03/04(火) 22:42:14.34それは違う
ターミナルの文字コードが CP932 なら raw_input() して読みとったバイト文字列も
CP932 でエンコードされている。print repr(raw_input()) とかすればわかる
0855デフォルトの名無しさん
2014/03/04(火) 22:45:09.89ソースコードのエンコーディングが変化すれば極当たり前にstrリテラルも変化するが
それは#coding指定子がやってることではない
0856デフォルトの名無しさん
2014/03/04(火) 22:47:08.86input()の返り値も"テスト"も特定の文字コードに依存しないから
0857デフォルトの名無しさん
2014/03/04(火) 22:58:12.03その「エンコードされて」どうなってるのか言わない物言いはわざと?
正確にはcp932でエンコードされたunicodeね。
Pythonで文字列の話をする時はstrなのかunicodeなのかはっきり喋ってね。
0858デフォルトの名無しさん
2014/03/04(火) 23:58:05.25CP932 でエンコードされているって書いてあるじゃん
str と unicode の区別も「バイト文字列」と書くことで区別つけたつもりだけど
0859デフォルトの名無しさん
2014/03/05(水) 03:32:10.79http://hain.jp/index.php/tech-j/2008/01/07/Python%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91
0860デフォルトの名無しさん
2014/03/05(水) 10:43:17.00最悪の回答だそれ
0861デフォルトの名無しさん
2014/03/05(水) 11:55:52.140862デフォルトの名無しさん
2014/03/05(水) 12:24:55.12class Meta:
hoge = true
class Custom( Base):
class Meta:
foo = false
こうするとBaseクラス内のMetaクラスのhogeをCustomでは引き継げないようです。継承したクラス内のクラスを継承する方法はないでしょうか?
0863デフォルトの名無しさん
2014/03/05(水) 13:44:30.00参考書でも買ってきて読めよ
普通にやり方書いてるだろ
0864デフォルトの名無しさん
2014/03/05(水) 13:49:49.48http://www.amazon.co.jp/gp/aw/d/1449372627/
これが日本で発売されるのはいつになるのだろう?
0865デフォルトの名無しさん
2014/03/05(水) 13:52:32.620866デフォルトの名無しさん
2014/03/05(水) 13:53:14.950867デフォルトの名無しさん
2014/03/05(水) 14:35:04.02突っ込みどころが多すぎてどう答えようか迷うけど、敢えて言うとしたら
>class Custom( Base):
の(の後のスペースは無くした方がいい
0868デフォルトの名無しさん
2014/03/05(水) 22:01:24.19すげえな
100%使わないけどw
0869デフォルトの名無しさん
2014/03/05(水) 22:05:10.86これ地味に欲しかったんだよね
0870デフォルトの名無しさん
2014/03/05(水) 22:13:55.05やはりそうは問屋が卸さなかった
しゃーない、ここだけは書き換えて使おう
0871デフォルトの名無しさん
2014/03/06(木) 02:04:51.76オライリーがPythonの本を日本で発売しないのは売れないからなの?
web関係の本なら需要があると思うんだけど。
0872デフォルトの名無しさん
2014/03/06(木) 02:10:23.140873デフォルトの名無しさん
2014/03/06(木) 02:16:09.000874デフォルトの名無しさん
2014/03/06(木) 03:47:41.89翻訳してやってもいいけど
どうせPythonユーザは日本では少ないから印税が何%くるのか知らんが、殆どもらえないだろうな
俺が70か80位になった時には社会貢献のために色々と翻訳してやるよ
あと50年位後の話だがw
0875デフォルトの名無しさん
2014/03/06(木) 04:28:29.58自分で買った上にスキャンとか入力してまでは無理だわなあ
0876デフォルトの名無しさん
2014/03/06(木) 06:10:19.86一度翻訳してしまえば2軒目からの依頼はほぼ純利益。
需要はあると思う。
まあ、権利がらみで出版社からウダウダ言われる可能性もあるけど…。
0877デフォルトの名無しさん
2014/03/06(木) 06:18:39.68公式のチュートリアルで足りる気もするけど
0878デフォルトの名無しさん
2014/03/06(木) 06:38:07.48公開権や複製権、譲渡権も絡む。
個人レベルじゃ話にならないな。
0879デフォルトの名無しさん
2014/03/06(木) 10:39:49.82純利益の前に死ぬな
0880デフォルトの名無しさん
2014/03/06(木) 17:42:47.020881デフォルトの名無しさん
2014/03/06(木) 18:20:33.78ボトルネックを早い言語で書けば速くなる
0882デフォルトの名無しさん
2014/03/06(木) 18:46:41.060883デフォルトの名無しさん
2014/03/06(木) 19:21:54.080884デフォルトの名無しさん
2014/03/06(木) 23:35:51.45受けそうなソフト作りたいんだけど、どういうのがいいかね
スゲエ!自分も作りたい!って思うようなものを……
0885デフォルトの名無しさん
2014/03/06(木) 23:43:59.44tumblrからエロ画像をダウンロードするソフト
モジュールの導入にwebアクセスからスクレイピング、正規表現にローカルファイルの読み書きと満遍なくやれるよ
0886デフォルトの名無しさん
2014/03/07(金) 00:03:34.10やりたい奴がやればいいのであって、ありがた迷惑だ
0887デフォルトの名無しさん
2014/03/07(金) 00:17:02.470888デフォルトの名無しさん
2014/03/07(金) 00:18:05.800889デフォルトの名無しさん
2014/03/07(金) 00:21:56.060890デフォルトの名無しさん
2014/03/07(金) 00:24:35.72エロいと思ってた
0891デフォルトの名無しさん
2014/03/07(金) 00:27:07.30公式サイトの文章執筆時期が少し古いのが気になります。
確かに私のlinuxに入っているのも2なのですが
今から始めるにしてもやはり2なのですか?
ちなみに用途としては、自分用の細々とした用事を満たせる
簡単なプログラムを作るという程度のことで、あまり複雑なことはやらないつもりです。
0892デフォルトの名無しさん
2014/03/07(金) 00:29:30.530893デフォルトの名無しさん
2014/03/07(金) 00:30:31.39用途が具体的でないので2でも3でも好きなほう使っていいです
0894デフォルトの名無しさん
2014/03/07(金) 00:31:47.90そういうしばりが無いなら3じゃないか?
0895デフォルトの名無しさん
2014/03/07(金) 00:36:16.390896デフォルトの名無しさん
2014/03/07(金) 00:37:58.100897デフォルトの名無しさん
2014/03/07(金) 00:42:22.68もし、使おうとしてるものがそうでないなら、他のもの使った方がいいと思う
0898デフォルトの名無しさん
2014/03/07(金) 00:55:21.270899デフォルトの名無しさん
2014/03/07(金) 00:59:51.65既存のコードの書き直しを考えずに、
頭切り替えて新しいスクリプトは [2/3] で書こう、ということだけなら
移行はそれほど大変ではないと思うので、あまり気にしなくてもいいかもしれないけれど
0900デフォルトの名無しさん
2014/03/07(金) 08:18:25.390901デフォルトの名無しさん
2014/03/07(金) 09:45:55.950902デフォルトの名無しさん
2014/03/07(金) 10:38:04.95easy_install
Distribute
setuptools
の違いや、使い分けがよくわからんです
ド初心者にわかるように教えてくり
0903デフォルトの名無しさん
2014/03/07(金) 10:54:17.21easy_install←古いやつ
Distribute←古いやつ
setuptools←pip内でつかってる
http://pip.readthedocs.org/en/latest/
0904デフォルトの名無しさん
2014/03/07(金) 10:58:07.94pip は Distribute や easy_install ( や setuptools ) を駆使したアンインストーラ付きのラッパー
間違ってたらスマソ
0905903
2014/03/07(金) 11:34:00.62pipとvirtualenvだけで、個別の環境構築できる
個別の実行環境つくらなくていいならvirtualenvすらいらん
1.pip入れる
2.pipコマンドでvirtualenv入れる
3.virtualenvコマンドで個別の実行環境なり、パッケージ環境を作る
4.sourceコマンドで3の環境を立ちあげ
0906デフォルトの名無しさん
2014/03/07(金) 13:08:50.882.7と3.3のどちらを先にインストールするのが良いですか?
あとvirtualenvをpipするのは2.7と3.3それぞれで必要ですか?
どっちで実行すればいいですか?
unix/windowそれぞれの場合についてお答えください
0907デフォルトの名無しさん
2014/03/07(金) 13:49:41.630908デフォルトの名無しさん
2014/03/07(金) 15:02:32.48義務かよ
0909デフォルトの名無しさん
2014/03/07(金) 15:08:44.280910デフォルトの名無しさん
2014/03/07(金) 19:25:06.91windowsは2.7を入れてから3.3を入れる
unixはどっちでもいい
virtualenvをpip installするのはバージョンごとに必要
pipを入れるのもバージョンごとに必要
0911デフォルトの名無しさん
2014/03/07(金) 21:46:43.22>virtualenvをpip installするのはバージョンごとに必要
>pipを入れるのもバージョンごとに必要
片方だけでいいよ
0912911
2014/03/07(金) 21:49:42.790913デフォルトの名無しさん
2014/03/07(金) 21:52:59.27とんでもないど素人たちがPythonに流れ込んでるのかな?
こりゃPythonやってる奴らは一番馬鹿にされそうな気がしてきた
0915デフォルトの名無しさん
2014/03/07(金) 21:57:35.670916デフォルトの名無しさん
2014/03/07(金) 22:05:04.88気のせい
ここは元から(超)初心者さんが質問しに来るスレ
0917デフォルトの名無しさん
2014/03/07(金) 22:07:12.04自分はPythonでプログラミング始めたけど、くだらない質問してたし助けられたよ
手当たり次第ググってプログラミングするよりかはましだと思う
0918デフォルトの名無しさん
2014/03/07(金) 22:24:01.280919デフォルトの名無しさん
2014/03/07(金) 22:26:07.41超初心者用なのに文句言ってる奴は
0920デフォルトの名無しさん
2014/03/07(金) 22:31:04.73まずやる事やれってこと
0921デフォルトの名無しさん
2014/03/07(金) 22:35:20.96それなら馬鹿にするんじゃなくて、その
>やる事
を教えてあげればいいじゃない
0922デフォルトの名無しさん
2014/03/07(金) 22:38:10.70池沼みたいな質問が増えてくるよ
初心者がPython触るのは本当鬱陶しいからやめてほしいね
0923デフォルトの名無しさん
2014/03/07(金) 22:50:38.92ですので初心者の方がPython触るのは歓迎です。
Pythonの初心者嫌いの>>922さんがここに来る理由が分かりません。
>>922さんは初心者の方の質問を無視すれば良いだけなのでは?
>>922さんは会社でも不満や否定形の話ばかりする方と思います。
相手の欠点・至らぬ点をあげつらう事に喜びを感じるのでは?
0924デフォルトの名無しさん
2014/03/07(金) 22:50:50.97人にアドバイスしてこそ心が清くなりスキルも上がるというもの
それは君の人生にとって大いなるプラスとなるだろう
0925デフォルトの名無しさん
2014/03/07(金) 22:57:10.94そう、俺はそれを言いたいんだよ、自分たちで質問してるのにまるで自分たちではないように振る舞って書き込んでいる質問者たち!
ググるより聞いたほうが早い?
馬鹿か
PHPerですら自分達で考え、四苦八苦した上で質問してる人が多いのに、ここは自分で試すの、検索するの面倒くさいから聞こうっていう性根の腐った奴らが多い
javaScript系のスレにもこういう馬鹿が出没するんだけどな
0926デフォルトの名無しさん
2014/03/07(金) 22:57:22.000927デフォルトの名無しさん
2014/03/07(金) 22:57:25.760928デフォルトの名無しさん
2014/03/07(金) 23:01:08.640929デフォルトの名無しさん
2014/03/07(金) 23:01:53.59次スレは立てないように
0930デフォルトの名無しさん
2014/03/07(金) 23:02:30.90俺は>>922じゃないが、ゆとり的な思想が好かんのよ
あ、Pythonって今まで極めてマイナーだったからPython使ってる人間の多くはゆとり世代か...
日本でのちょっと先が思いやられるな
PHP以下の評価受けそうだ
Pythonに初心者が来るのはいいんだが、ここ最近の質問の質の低さはひどすぎる
0931デフォルトの名無しさん
2014/03/07(金) 23:04:36.40くだ質スレ質問する時なんて、ググって得られた情報が正しいか判断できないでしょ
わからん→ググる→動いた→やったぜ
これのほうがまずいでしょ
0932デフォルトの名無しさん
2014/03/07(金) 23:04:52.060933デフォルトの名無しさん
2014/03/07(金) 23:07:18.31それなら、「ググってこうやって動いたけど、これで合ってますか?」って質問すればいいだろうが
0934デフォルトの名無しさん
2014/03/07(金) 23:09:21.060935デフォルトの名無しさん
2014/03/07(金) 23:12:34.89ESRに釣られたアホが真っ先に弄るからな
0936デフォルトの名無しさん
2014/03/07(金) 23:13:08.73コレでいいと思う
自分で調べて確かめてみるって事が大事だし、それが勉強ってもんだ
そうやっていって自信付けていけばいいし、みんなそうやってきた
考えもせずに安易に答えだけ聞いても勉強にならないよ
0937デフォルトの名無しさん
2014/03/07(金) 23:13:26.640938デフォルトの名無しさん
2014/03/07(金) 23:15:31.23コンデンサとかしか出てこなかったけど...
0939デフォルトの名無しさん
2014/03/07(金) 23:16:07.39>わからん→ググる→動いた→やったぜ
のあとに、わざわざ2chで質問する人は限られてる
>>936
それがPHPの悲劇
脆弱性含みまくりのチュートリアルが拡散されてるよ、今も。
0940デフォルトの名無しさん
2014/03/07(金) 23:16:58.24流石にセキュリティの入門書ぐらい読むだろ
0941デフォルトの名無しさん
2014/03/07(金) 23:19:53.30PHPはセキュリティ対策の本も出ているし、Web情報もある
よっぽどの馬鹿じゃない限りそんなのを素のまま使わない
ましては企業で
0942デフォルトの名無しさん
2014/03/07(金) 23:20:45.36普通にJava使うよ
0943デフォルトの名無しさん
2014/03/07(金) 23:24:01.01銀行系とかならわかるが
0944デフォルトの名無しさん
2014/03/07(金) 23:28:00.020945デフォルトの名無しさん
2014/03/07(金) 23:39:16.82俺Java嫌い
俺の中ではCより面倒くさい
楽さで言えば絶対にPHPだな
俺はセキュリティ対策なんか今までの経験で全部ライブラリ化してるから実装はすぐ
0946デフォルトの名無しさん
2014/03/07(金) 23:53:43.19数回のループ後、Rubyへ。
0947デフォルトの名無しさん
2014/03/07(金) 23:57:22.200948デフォルトの名無しさん
2014/03/07(金) 23:57:25.51でも案外そっちの方がそいつにとっても良いのかもよ
0949デフォルトの名無しさん
2014/03/07(金) 23:58:46.19Rubyの方が日本じゃシッカリしてるから
0950デフォルトの名無しさん
2014/03/08(土) 00:16:48.600951デフォルトの名無しさん
2014/03/08(土) 00:29:32.14PHPer達ですら、フレームワークから独立しているのに
フレームワークを使うのは弊害もあるってことだ
0952デフォルトの名無しさん
2014/03/08(土) 00:37:28.24涙ふけよカスニート(プ
0953デフォルトの名無しさん
2014/03/08(土) 00:41:10.990954デフォルトの名無しさん
2014/03/08(土) 00:42:12.080955デフォルトの名無しさん
2014/03/08(土) 00:46:26.95先行きは暗いかも
0956デフォルトの名無しさん
2014/03/08(土) 00:47:02.080957デフォルトの名無しさん
2014/03/08(土) 00:49:28.540958デフォルトの名無しさん
2014/03/08(土) 00:50:30.31その弊害を答えられないとニート決定だね!
0959デフォルトの名無しさん
2014/03/08(土) 00:51:44.60何コイツ?
マジで面倒くせぇ
0960デフォルトの名無しさん
2014/03/08(土) 00:52:06.06涙ふけよカス
0961デフォルトの名無しさん
2014/03/08(土) 00:52:48.720962デフォルトの名無しさん
2014/03/08(土) 00:53:18.71馬鹿っぽいね
0963デフォルトの名無しさん
2014/03/08(土) 00:53:57.32凄く馬鹿っぽいね
0964デフォルトの名無しさん
2014/03/08(土) 00:54:00.650965デフォルトの名無しさん
2014/03/08(土) 00:56:56.04ttp://blog-imgs-51.fc2.com/a/q/u/aqua12sa/20120815014142d33.jpg
0966デフォルトの名無しさん
2014/03/08(土) 01:02:38.07クリスマス休暇の暇つぶしが目的だったと書いてあった。
0967デフォルトの名無しさん
2014/03/08(土) 02:32:06.13だうと
0968デフォルトの名無しさん
2014/03/08(土) 07:48:58.01Pythonはこれらの言語が持つ懐かしい香りがするため使えてます
C系構文にアレルギーがある人にオススメの言語です
0969デフォルトの名無しさん
2014/03/08(土) 08:37:46.390970デフォルトの名無しさん
2014/03/08(土) 09:02:56.43Twitterからタイムラインを読み取ってターミナルに表示し、
ついでにツイート内のリンク先が画像なら保存して表示するというスクリプトを書いたのですが、スレッドを使うと何故か凄まじい数のエラーが出てしまいます。
これは何が原因なのでしょうか?どうも何か根本的な間違いを犯している気がします
あとTwitter特有の短縮リンクのせいで一々リンク先に飛ばないと確認できない糞仕様ですがこの際そこはどうでもいいです、後でGUIアプリに作り直します
0971デフォルトの名無しさん
2014/03/08(土) 09:09:05.67でも根本的にエラーを張らない時点で0点だな
テストで名前を書いてないに等しい
0972デフォルトの名無しさん
2014/03/08(土) 09:11:42.42「GUIを操作していいのはGUIを作ったスレッドだけ」
を犯しているものと思われる
読まなくてもそのくらいは想像がつく
0973デフォルトの名無しさん
2014/03/08(土) 09:16:48.77文字数制限に引っかかっちゃいました
2014-03-08 09:12:40.749 Python[4368:2d17] *** Assertion failure in +[NSUndoManager _endTopLevelGroupings], /SourceCache/Foundation/Foundation-1056/Misc.subproj/NSUndoManager.m:328
An uncaught exception was raised
+[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread.
こういうのが延々と羅列されています
Exceptionがcaughtされてないということしか理解できません
0974デフォルトの名無しさん
2014/03/08(土) 09:23:45.15>スキル・キャリアを最大限に生かせる
>JAVA・PHPエンジニアの派遣
スキル・キャリアを最大限に生かして派遣かよwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0975デフォルトの名無しさん
2014/03/08(土) 09:24:03.88実際ideone使えてるんだから少し考えようぜ。
で、原因書いてありますね。
>is only safe to invoke on the main thread.
>>972で確定。
0976デフォルトの名無しさん
2014/03/08(土) 09:57:18.28仲良く使ってね
くだすれPython(超初心者用) その22
http://toro.2ch.net/test/read.cgi/tech/1394240091/
0977デフォルトの名無しさん
2014/03/08(土) 10:08:29.89>Twitter特有の短縮リンクのせいで一々リンク先に飛ばないと確認できない糞仕様
短縮リンクが糞なのは同意ですが
一々リンク先の件は http の HEAD リクエストを勉強してごらん
0978デフォルトの名無しさん
2014/03/08(土) 10:13:09.42>>972 の通りだけど thread 間の通信に queue を使うと良い
0979デフォルトの名無しさん
2014/03/08(土) 11:03:54.07>>977
>>978
皆さんありがとうございます!!!
理想的なものが出来ました!!!!
0980デフォルトの名無しさん
2014/03/08(土) 11:04:00.00乙っぱい
0981デフォルトの名無しさん
2014/03/08(土) 11:54:48.15どこをどう変えたら出来たとか書けば、更にいいんだがな
また同じような質問の際に"過去スレ読め"、とビシッと言えるから
0982デフォルトの名無しさん
2014/03/08(土) 12:18:40.27俺が携帯から見てるからかもしれないけれど、読みにくいコードだな
0983デフォルトの名無しさん
2014/03/08(土) 15:51:46.55トンズラしつつ汎用的な技術が身につく。
ギリギリまで踏ん張って、地元にかえれれば儲けもの。
0984デフォルトの名無しさん
2014/03/08(土) 19:46:41.52保存したcsvファイルの特定の部分だけを編集して保存するんにはどうしたら
よいですか?
よろしくお願いいたします。
0985デフォルトの名無しさん
2014/03/08(土) 19:59:14.690986デフォルトの名無しさん
2014/03/08(土) 20:10:59.76vi /path/to/csvfile.csv
0987デフォルトの名無しさん
2014/03/08(土) 20:56:59.04Pythonでのクラスの作り方・使い方やGUI関係のアプリの作り方を
一から学べるなら買いたいんですけど、その辺どうですかね
子供向けの連載を本にしたという情報があってちょいと不安です
0988デフォルトの名無しさん
2014/03/08(土) 21:29:06.32サンプルコードたくさん載ってたしいいんじゃないの
子供向けだから特にどうってこともないと思う
0989デフォルトの名無しさん
2014/03/08(土) 21:29:35.57この世界は
0990デフォルトの名無しさん
2014/03/08(土) 21:33:40.290991デフォルトの名無しさん
2014/03/08(土) 22:58:02.77もし、既にあるファイルの特定の部分のみのデータ書き換え(ファイルへの書き込み処理が発生する)ような事を意図しての質問だったら、
CSVは、適してません。CSVでは通常、可変長なレコードのシーケンシャルなアクセスになるので、
一部を編集するといった場合でもファイル全体を新たに書き出す事になります。
レコードの一部のみをピン・ポイントで書き換えたいといった場合、
ファイル・フォーマットは、固定長のレコードで設計し、seekを使ってランダム・アクセスします。
0992デフォルトの名無しさん
2014/03/09(日) 01:23:57.10ありがたい
早速買います
0993デフォルトの名無しさん
2014/03/09(日) 13:11:48.55よろしくお願いします
プログラム板 強制ID制導入に関する投票スレ
http://kohada.2ch.net/test/read.cgi/vote/1394290844/
0994デフォルトの名無しさん
2014/03/09(日) 13:41:32.110995デフォルトの名無しさん
2014/03/09(日) 18:44:19.200996デフォルトの名無しさん
2014/03/09(日) 18:46:01.620997デフォルトの名無しさん
2014/03/09(日) 20:40:33.820998デフォルトの名無しさん
2014/03/09(日) 21:56:31.980999デフォルトの名無しさん
2014/03/09(日) 21:56:51.351000デフォルトの名無しさん
2014/03/09(日) 21:57:22.8210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。