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


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

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



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

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

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

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

357 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 11:50:56 ]
class Hogeがあったとして、
"Hoge"からはどうやってアクセスするんだっけ?

あと、こういうのを一般的に言って、どんな専門用語でしたっけ?

358 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 11:53:48 ]
>>357
globals()["Hoge"]

359 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 12:01:54 ]
>>358
ありがとうございます。

360 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 12:11:41 ]
イントロスペクションとかリフレクションとかそのへんの用語を求めてる?

361 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 12:43:47 ]
>>360
イントロスペクションってのは初めて聞いたので、調べてみます。

単に、eval("Hoge")みたいなのと勘違いしていた模様。

362 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 13:21:52 ]
Hoge.py 内に
class Fuga があったとして、
"Hoge", "Fuga" からはどうやってアクセスするんだっけ?


363 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 13:23:23 ]
Hoge.py 内に
class Fuga, method Hage があったとして、
"Hoge", "Fuga", "Hage" からはどうやってアクセスするんだっけ?

364 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 13:31:07 ]
 

365 名前:デフォルトの名無しさん [2009/07/07(火) 13:34:51 ]
 



366 名前:デフォルトの名無しさん [2009/07/10(金) 09:36:03 ]
age

367 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 09:49:45 ]
おはようございます。
わたし16歳の女子高生ですけど
Python始めるにあたって最初に読むべき本は
ありますか?

368 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 10:08:35 ]
ないよ

369 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 13:44:13 ]
こんにちは。
わたし15歳の巨乳グラビアアイドルなんだけど
みんなでPythonやろうよ。

370 名前:デフォルトの名無しさん [2009/07/10(金) 13:59:45 ]
みんなでPython www

371 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 05:24:24 ]
Good Morning, Everyone!!!!
I am a thirteen years old girl.
I will start learning Oppaithon Programming.
Please teach me chome-chome.

372 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 05:35:52 ]
chome-chomeとか団塊レベルじゃないと使わないだろう普通

373 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 06:18:10 ]
コメコメ?アスタリスクのこと?

374 名前:デフォルトの名無しさん [2009/07/11(土) 09:33:34 ]
いつもの英語下手なひとか

375 名前:デフォルトの名無しさん [2009/07/11(土) 12:39:50 ]
OptionParserについて質問です


#!/usr/bin/env python
# coding: utf-8

from optparse import OptionParser

parser = OptionParser()
parser.add_option('-f', '--fuga', action='append', type='string', dest='fugaList', help='fugafugafuga')
(options, args) = parser.parse_args()
print options.fugaList


※上記のスクリプト名を仮にfugaとする

実行例1:
$ ./fuga -f hoge piyo
['hoge']

実行例2:
$ ./fuga -f hoge -f piyo
['hoge', 'piyo']

複雑なオプション指定による処理分岐を行いたくてOptionParserを使い始めました
実行例1のように一つのオプションに多数の引数を渡して、
実行例2の結果['hoge', 'piyo']のように"options.fugaList"に
引数を代入したいのですが、可能でしょうか?
可能ならアドバイスをお願いします



376 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 12:55:13 ]
一つのオプションに対して複数のオプション引数を許したら
後に続くであろう固定引数が存在するかしないか確認する術がない気がする

なので素人考えだけど -f"hoge,piyo" でごまかすとか

377 名前:デフォルトの名無しさん [2009/07/11(土) 13:22:26 ]
>>376
レスありがとうございます

>>275にこのスクリプトの使用目的を書いていなかったので
後出しになってしまいますが

$ ./fuga hoge_*

のようにコマンドラインからワイルドカードを使用して、
複数のファイル名をオプション引数に渡して利用するのがメインなので
-f"hoge,piyo" ではちょっとごまかせないです。。。

378 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 17:38:38 ]
そういう場合-fオプションがあったらどういう動作をする、という風に作るものであって
-fオプションにパラメータをぞろぞろ渡すという風にはしないだろ、普通。

379 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 20:33:47 ]
A/B/__ini__.py で変数を定義
hoge = 'hogehoge'
A/B/module_x.py というモジュール内でhogeを使いたい場合、どうすればいいのかを教えてください。

import hoge
ではダメなんですか?

380 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 21:02:00 ]
>>379
コピーでよけりゃ
from . import hoge

381 名前:375 mailto:sage [2009/07/12(日) 02:57:27 ]
>>378
確かに普通はそうかもしれませんね。。。



という訳でOptionParserではワタシがしたいことが出来なさそうなので
自分でモジュールをつくることにしました
どうもありがとうございました


382 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 03:26:51 ]
どういたしまして

383 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 07:40:36 ]
>>377
OptionParserなりgetoptで "hoge_*" を文字列として受け取ってから
glob でワイルドカードを展開すればいいんじゃまいか。

ためしてないけど Linux/Unix 環境だとワイルドカードはシェルによって
展開されてからプログラムに渡されるので

./fuga -f "hoge_*"

のようにコマンド引数をクオートして書く必要がある。

384 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 09:37:55 ]
きたああああああああああああああ
UnicodeDecodeError出なくなった!

385 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 10:08:02 ]
>>384
どうやった?
まさか setdefaultencoding() じゃないよな?

from __future__ import unicode_literals
して、テキストファイルのファイル入出力は
import codecs
codecs.open('foo', encoding='cp932')
のようにエンコーディングを指定してファイルを開くのが正しい方法だぞ。



386 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 11:45:18 ]
リスト型で日本語を扱う場合一個ずつ取り出さないと文字が化けちゃうんですが
スライスで一度に複数の要素を扱えるようになる方法はないんでしょうか

387 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 11:54:03 ]
>>386
実際に化ける場合のコードと、「一個ずつ取り出す」のコードを見せてみりゃれ

388 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 12:11:28 ]
辞書を

hoge = {'fuga': 1}
print hoge.fuga

とJSの連想配列のようにキーをプロパティみたいにして
アクセスしたいんですがどうにか実現できないですか?

389 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 12:38:09 ]
>>385
フッ…txtをUTF-8で保存することを覚えただけさ

ついでにだけどunicode_literalsって何?
2.5だとimportできなくていいのか?

390 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 12:48:52 ]
>>389
うん、2.6からしか使えない。
たとえば、
#coding: utf-8
open("あいうえお")
ってやると、"あいうえお"はutf-8のバイト列だから、Windowsとかでは
"あいうえお" という名前のファイルを開けない。
open(u"あいうえお")
と書くと普通にファイルが開ける。

で、 Python 3.0 以降では普通に "あいうえお" と書くと Python 2系の u"あいうえお"
相当になるんだけど、Python2系でもu無しにUnicode文字列を書けるようにするのが
unicode_literals

391 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 12:51:59 ]
>>388
例えば、
>>> class JSObject(dict):
... def __init__(self, o):
... self.__dict__ = o
...
>>> o = JSObject({'foo': 1})
>>> o.foo
1

他にも __getattr__, __setattr__ を使った方法とかもある。

392 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 13:10:28 ]
>>387
こんな感じです
#ファイルの2行目からの文字列を3行ずつリストの1要素にまとめて扱いたい
fhnd = open('spam.txt','r')

lines = []
add_up = []

line_start = 2
line_end = 5

for temp in fhnd:
 lines.append(temp)

for temp in lines:
 if (line_start > line_max) or (line_end > line_max):
  break
 add_up.append(lines[line_start] + lines[line_start+1] + lines[line_end-1]) #←化けない
# add_up.append(lines[line_start:line_end]) #←上の代わりに実行すると化ける
print str(add_up[0]) + str(add_up[1]) + str(add_up[2])#←上のfor文内のうち上の行を実行なら化けない
print str(add_up[0:3])#←上のfor文内のいずれでも化ける

393 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 13:12:35 ]
抜けてたけど
line_max = len(lines)
です

394 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 13:13:17 ]
>>391
おお!ありがとうございます!
勉強になりました!

395 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 13:58:36 ]
>>392
>  add_up.append(lines[line_start] + lines[line_start+1] + lines[line_end-1]) #←化けない
> # add_up.append(lines[line_start:line_end]) #←上の代わりに実行すると化ける
上の場合、appendの引数は文字列だけど、下の場合はリスト
なので下を上と同じくするならadd_up.append( ''.join( lines[line_start:line_end]))じゃまいか

> print str(add_up[0:3])#←上のfor文内のいずれでも化ける
リストをstrしたときに得られるのはprintできる文字列

>>> L = [1, 2, 3]
>>> str(L)
'[1, 2, 3]'



396 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 15:24:04 ]
>>392
まずはstr()とrepr()の違いが判らないとな。

>>> astr = 'あいう'
>>> alist = [astr]
>>> print astr
あいう
>>> print alist
['\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86']

リストを文字列にしようとしたら、リストの要素にはstr()ではなくてrepr()が適用される。
repr()されると、文字列のうちASCII文字以外は\xでエスケープして表示される。

三行分の文字列を配列にして add_up を2重配列にしたい?
それとも三行分の文字列を一つの文字列に連結したい?
lines = open('spam.txt').readlines()
add_up = []
for i in range(1, len(lines), 3):
    add_up.append(lines[i:i+3]) # 2重配列にしたい場合
    add_up.append(''.join(lines[i:i+3])) # 連結したい場合

397 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 16:36:49 ]
エンコーディング方面の問題かと思って
見当違いな方向に進むところでした
ありがとうございました

398 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 05:48:35 ]
>>390
ありがとう

399 名前:デフォルトの名無しさん [2009/07/13(月) 22:41:07 ]
[1,2,3,1,4,5]のようなリストの重複した要素を削除して[1,2,3,4,5]のようなシーケンスを作る。
※並び順は問わない。

set型を使わず、for文とif文を組み合わせるなどして作成する。
模範解答をお願い致します。

400 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 22:50:35 ]
とりあえず、初歩的にはこんな感じだろう。

ListA = [1,2,3,1,4,5]
ListB = []

for x in ListA:
 if not x in ListB:
  ListB.append(x)

print ListB

401 名前:デフォルトの名無しさん [2009/07/13(月) 22:53:49 ]
>>400
レスありがとうございます。
削除する方法ばかり考えてましたが、追加するって考え方もあるんですね
すごく参考になりました。スマートな回答どうもです!

402 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 22:56:05 ]
a = [1,2,3,1,4,5]
print list(set(a))

403 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 22:56:27 ]
最初に空リスト作るってのはよくある

404 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 00:44:04 ]
>>399
set型を使わない理由は?

405 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 00:52:50 ]
宿題だからでは・・・
あれ、だとすると宿題スレだなw



406 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:09:18 ]
2ちゃんに書き込みたいけどcookieがよく分からん
どうやってResponseから取り出してrequestに追加するの?

407 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:42:01 ]
firefox使えばok

408 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:45:22 ]
というかwgetだけでできるじゃん

409 名前:デフォルトの名無しさん [2009/07/15(水) 06:59:12 ]
インスタンスに勝手に属性をつけられないようにはできませんか?
クラスの定義に書いてある属性だけで打ち止めにしたい・・・

410 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 08:56:43 ]
def __setattr__(self, name, value):
    if hasattr(self, name):
        object.__setattr__(self, name, value)
    else:
        raise AttributeError(name)

411 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 09:10:10 ]
そうか!
__setattr__ をオーバーロードすればよかったんですね.

412 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 09:23:09 ]
__slots__ とどこが違うの?

413 名前:410 mailto:sage [2009/07/15(水) 09:58:48 ]
>>409的なことはやらないから忘れてた

414 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 10:18:58 ]
>>412
何か文句でも?

415 名前:406 mailto:sage [2009/07/15(水) 13:29:32 ]
いやPythonから書き込みたいんだけど



416 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 13:32:20 ]
>>415
spam業者乙!

417 名前:デフォルトの名無しさん [2009/07/15(水) 13:34:45 ]
過去スレに(r

418 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 13:51:46 ]
from cookielib import CookieJar

cj = CookieJar()
cj.extract_cookies(res,req)
cj.add_cookie_header(req)

419 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 15:44:39 ]
これだな
pc11.2ch.net/test/read.cgi/tech/1226830195/14

420 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 15:52:29 ]
フォルダの中にあるtxtファイルを全て読み込むことってできますか?

421 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 15:54:12 ]
>>420
import glob
for i in glob.glob('*.txt'):
  d = open(i).read()

422 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 15:58:45 ]
>>421
ありがとうございます
os.walk使って無理矢理やってました

423 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 16:02:41 ]
glob() はサブディレクトリ見に行かないぜ

424 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 16:54:45 ]
paverいろいろおすすめ

from paver.path import path
for f in path('.').walkfiles('*.txt'):
    print f

425 名前:デフォルトの名無しさん [2009/07/16(木) 05:05:09 ]
くそう・・・なんで俺のコードじゃpickleが使えないんだ・・・
もう寝る



426 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 15:49:26 ]
gzip解凍できねえぞくそお

427 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 15:59:39 ]
ttp://blog.kzfmix.com/entry/1187087731
これだ!

428 名前:デフォルトの名無しさん [2009/07/16(木) 16:49:39 ]
文章の中から単語の数かぞえんのどうやんの?
countを使ってどうやんのさ


429 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 16:56:15 ]
wc --words

430 名前:デフォルトの名無しさん [2009/07/16(木) 17:16:57 ]
pythonって何のために使うの?


431 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 17:51:28 ]
汎用です

432 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 21:46:48 ]
夜のお供に使ってみるか・・・

433 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 02:41:08 ]
perlをわすれるため

434 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 07:14:30 ]
雑用を処理させていますよ。
gMailを読んでDBに格納しておいて月末にExcelにまとめさせるとか

435 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 16:20:12 ]
グラフ描くのに色々モジュールあるみたいだけど何がいいかな



436 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 18:56:36 ]
今os.systemを使ってUNIXコマンドを組み込んでるんですが
bashとかでお馴染のリダイレクトやパイプを
Pythonでも使いたいのですが可能ですか?


437 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 19:02:23 ]
os.system は system(3) 経由 sh 経由でコマンドを起動するはずだからできると思うが、
subprocess モジュールを勉強したほうがいいと思う。

438 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 19:13:07 ]
>>437
。。。すまんm(_ _;)m

勘違いして別のコマンド実行してたみたいです。。。
確認したらちゃんとできました。
回答ありがとうございましたm( __ __ )m

439 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 19:44:54 ]
しかし乗り換えるにはsubprocessは面倒くさい罠

440 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 19:53:55 ]
popen2.popen3()

441 名前:デフォルトの名無しさん [2009/07/18(土) 05:44:16 ]
4コアでガンガンまわしてるつもりになってても、
実は1コアしか動いていないのが悲しい
スタックレスなんとかをかんとかすればアレなのかな?

442 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 06:57:04 ]
つmultiprocessing
スレッド回すよりは好きだわ

443 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 10:58:43 ]
unko = [1, 3, 5, 7, 11, 13]
for i in unko:
 if i < 10:
  unko.remove(i)
for i in unko:
 print str(i)

3 <---?
7 <---?
11
13

なして?


444 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 11:19:11 ]
ループ中に回してるリストをいじるのはやめましょうという話
どうしてもやりたければ for i in unko[:]: unko.remove(i)

445 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 11:21:12 ]
リストについて舐める操作をしながら、そのリストに副作用が起きる操作をしてるから。
リストの1番めを見て、1を削除。その次はリストの2番めを見るので、1番めに入った
3は無視されちゃう。



446 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 17:05:09 ]
unko.remove(i) ワロス

447 名前:デフォルトの名無しさん [2009/07/18(土) 21:28:25 ]
ちんこ

448 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 22:13:35 ]
フルーチャートを書けばすぐわかることだろうに

449 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 22:14:17 ]
フローチャートを書けばすぐわかることだろうに

450 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 22:17:00 ]
flo'u tʃɑ':(r)t

451 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 00:14:08 ]
クラスの中で変数を宣言したいのですが、

self.unko = 0

で、いいんでしょうか?

452 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 00:15:18 ]
はいそれで大丈夫です
外部アクセスを防ぎたい場合はself.__unkoとしてください

453 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 00:31:21 ]
ありがとうございます!

外部アクセスを防ぐ、ということは宣言した後予期せぬ状況で中身が書き換わるのを防ぐ、ということでしょうか?

454 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 01:45:38 ]
no

455 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 02:03:46 ]
うーんどういうことなんでしょう。
内容を事ある毎に変化させていくパラメータとして使いたいので普通に宣言すれば良いと思っているのですが、それで問題ないでしょうか?



456 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 02:18:34 ]
no

457 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 02:21:19 ]
>>455
余計なことを言って混乱させてすいませんでした
self.__unko
のように先頭に__を付けると外部アクセスのできないいわゆるprivate変数の様な感じになります






[ 続きを読む ] / [ 携帯版 ]

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

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