くだすれPython(超初心者用) その4
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/05/24(日) 19:25:51もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、
お礼は Python の布教と初心者の救済をお願いします。
エラーを解決したいときはエラー表示や環境を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>950 辺りで
前スレ
くだすれPython(超初心者用) その3
http://pc12.2ch.net/test/read.cgi/tech/1232055225/
関連スレ
Pythonのお勉強 Part33
http://pc12.2ch.net/test/read.cgi/tech/1240678081/
0002デフォルトの名無しさん
2009/05/24(日) 19:32:46Python の Home Page
http://www.python.org/
Python 日本語ドキュメント - Pythonistaのお友達
http://www.python.jp/doc/release/
最新版直リン - 2.Xが推奨。3.Xはライブラリやドキュメントが使えないことも
http://www.python.org/download/
Python のコーディングガイド PEP8
http://www.python.org/dev/peps/pep-0008/
Python のコーディングガイド PEP8 - 日本語訳
http://www.oldriver.org/python/pep-0008j.html
日本語文字列コード問題まとめ
http://python.matrix.jp/tips/string/encoding.html
インタラクティブモードのエンコード
http://python.matrix.jp/tips/compatibility/interact_encoding.html
0003デフォルトの名無しさん
2009/05/24(日) 19:34:48これはどう見てもおかしいだろ。 まず、主語が2。で動詞がget。
2が単数形だとしたら、getsにしないとおかしい上に、目的語がない。
直訳すると「2が得る」 何を得るんだよ!!!いいかげんにしろ。
それを言うなら
I get 2. だろ。しかも現在形だし。 過去形、いや現在完了形ぐらいまともに使ってくれよ。
I've got 2. 少しはましになって来たが、まだ気に入らない。その2だ。
いったいお前は何を手に入れたんだ?2という数字か?
違うだろ、手に入れたのは2番目のレスだろ。
どうも日本人は数詞と序数詞の区別がよく分かっていない節がある。
これらを踏まえて、正しくは
I've got the second responce of this thread.
ここでtheにも注目してもらいたい。このスレの2ってのは
特定の、このレスだけなんだから。だからaでも無冠詞でも なく、the second responceなんだ。
もう一度おさらいしてやる。
I've got the second responce of this thread.
0004デフォルトの名無しさん
2009/05/24(日) 19:48:21ここで Python 使っているかたはいらっしゃいますか?
使いやすいですか?何か気をつけることとかありますか?
0005デフォルトの名無しさん
2009/05/24(日) 19:55:23バージョン2.3とか2.4.3とかだけどそれでもよければ
ttp://www.value-domain.com/xreaip.php
0006デフォルトの名無しさん
2009/05/24(日) 19:58:050007デフォルトの名無しさん
2009/05/24(日) 20:01:31ありがとうございます
2.5 以上を想定していたので
とりあえず >>6 さんの方法で出来たひとのサイトとかがみつかるか調べてみます
0008デフォルトの名無しさん
2009/05/24(日) 20:10:29好きなバージョン入れてやってるひとがいたのでこれをまねしてみます〜
ttp://inforno.net/articles/2008/07/29/using-any-version-of-python-on-xrea-servers
ttp://inforno.net/articles/2009/01/25/using-any-version-of-python-on-xrea-servers-part2
0009デフォルトの名無しさん
2009/05/24(日) 20:57:000010デフォルトの名無しさん
2009/05/24(日) 21:14:530011デフォルトの名無しさん
2009/05/24(日) 21:42:040012デフォルトの名無しさん
2009/05/25(月) 10:48:47個人的にはフィトンのほうが簡単だった
ウェブだったらぺへぺのほうがいいけどね
0013デフォルトの名無しさん
2009/05/25(月) 12:15:170014デフォルトの名無しさん
2009/05/25(月) 12:17:04stdin.readlineなど利用して
標準入力からキーボード入力したいのですが
バックスペースで日本語を消すと、半分(1byte)だけ消されて
文字化けします。
1文字は1文字としてバックスペースで消す方法を教えてください。
0015デフォルトの名無しさん
2009/05/25(月) 12:34:260016デフォルトの名無しさん
2009/05/25(月) 19:47:410017デフォルトの名無しさん
2009/05/25(月) 23:00:57def func(self, **kwargs):
super(Foo, self).func(**kwargs)
class B(Foo):
def func(self, **kwargs):
Foo.func(self, **kwargs)
AとBの違いはなんでしょうか??
0018デフォルトの名無しさん
2009/05/25(月) 23:55:020019デフォルトの名無しさん
2009/05/26(火) 00:54:33Foo.func()は明示的な指定
type()で動的にクラスを生成したりするときしか考慮する必要はないと思う
何も考えずにsuper()を使うのが楽
詳しく知りたいならmroでググってみてくれ
0020デフォルトの名無しさん
2009/05/26(火) 01:03:58かっこよすぎ
def Counter(n=0):
Counter.cout = n
def increment():
nonlocal c
c += 1
Counter.increment = increment
return Counter
c = Counter(2)
c.increment()
c.increment()
c.increment()
print(c.cout)
002120
2009/05/26(火) 01:06:09nonlocal cも
なんかに使えますかねこれ
002220
2009/05/26(火) 01:11:340023デフォルトの名無しさん
2009/05/26(火) 01:12:36素直にクラスにしとけ
002420
2009/05/26(火) 01:19:36ところで"\u2020"とかいう表記はusc2ですか?
0025デフォルトの名無しさん
2009/05/26(火) 01:40:170026デフォルトの名無しさん
2009/05/26(火) 03:18:29class Hoge(object):
def __init__(a):
print a
h = Hoge()
これはただのコンストラクタなんだろうけど
そうじゃなくて
h = Hoge()
h() が出来る香具師のことなんですが
0027デフォルトの名無しさん
2009/05/26(火) 04:02:55... def __init__(self):
... print "init"
... def __call__(self):
... print "call"
...
>>> h = Hoge()
init
>>> h()
call
002814
2009/05/26(火) 14:20:57コンソールはlinuxのktermとかxtermとかgnome-terminalとか色々試したけど
どれも同じでした
>>16
エンコーディングはUTF-8です
ぐぐっても解消策が出てこないなぁ
0029デフォルトの名無しさん
2009/05/26(火) 16:08:150030デフォルトの名無しさん
2009/05/26(火) 16:11:360031デフォルトの名無しさん
2009/05/26(火) 16:26:20環境をもっと詳しく。
Linuxのディストリは何?
Python関係なく普通にシェル上で日本語を入力してバックスペース
押したらちゃんと日本語一文字消える?
003214
2009/05/26(火) 16:30:10ディストリはarchとubuntuで試しました
pythonに関係なくシェル上だとBSで日本語一文字消せます
ということは、皆さんは普通に消せてるんですね
0033デフォルトの名無しさん
2009/05/26(火) 16:39:57cat (とか)に何か入力しようとした状態のことを聞いている。
0034デフォルトの名無しさん
2009/05/26(火) 16:41:49import os
print os.name
> posix
a = 'os.%s' % name
print a
> os.name
0035デフォルトの名無しさん
2009/05/26(火) 16:42:27この場合環境として重要、かも。
0037デフォルトの名無しさん
2009/05/26(火) 16:44:28eval('os.name')
0039デフォルトの名無しさん
2009/05/26(火) 19:52:31質問する場所
004014
2009/05/26(火) 22:18:20もう少し調べてLinux板で質問してきます
0041デフォルトの名無しさん
2009/05/28(木) 20:34:35作りたいですがpythonだとwxpythonが
良いですかね?
やはりtkinterからおさえておくべき?
0042デフォルトの名無しさん
2009/05/28(木) 20:43:32004341
2009/05/30(土) 11:33:20python自体を止めておいた方が
良いってことか
0044デフォルトの名無しさん
2009/05/30(土) 12:18:520045デフォルトの名無しさん
2009/05/30(土) 18:05:06無駄な話を嫌う傾向にあると思ふ
0046デフォルトの名無しさん
2009/05/31(日) 11:02:500047デフォルトの名無しさん
2009/05/31(日) 20:21:040048デフォルトの名無しさん
2009/05/31(日) 21:07:22なんかプログラムを作ってるのかな?
0049デフォルトの名無しさん
2009/05/31(日) 21:13:590050デフォルトの名無しさん
2009/05/31(日) 21:22:15あと最近はウェブアプリに挑戦
0051デフォルトの名無しさん
2009/05/31(日) 21:25:070052デフォルトの名無しさん
2009/05/31(日) 22:08:440053デフォルトの名無しさん
2009/05/31(日) 23:12:22blender?
0054デフォルトの名無しさん
2009/05/31(日) 23:35:32例えば�@ファイヤーウォールが反応したら携帯にメールで知らせるとかは?
�Aひとつのフォルダに複数のmp3のデータが入っている。名前はごちゃごちゃ。
それを01.mp3〜0n.mp3にファイル名を変換することは可能ですか?
0055デフォルトの名無しさん
2009/05/31(日) 23:51:000056デフォルトの名無しさん
2009/06/01(月) 00:02:511はどんなファイアウォールを使ってるかによる
ログをテキストで定期的に書き出してくれるFWなら頑張れば出来る
そうでない場合は可能だけどちょっと難しいかな
2は余裕。osやos.path見てみるといいよ
0057デフォルトの名無しさん
2009/06/01(月) 00:26:33ご丁寧にありがとうございます。
見てみますね。
はじめてのpython みんなのpythonあたりを読破すれば�A位は簡単にできますか?
本屋で立ち読みした時に、複雑な電卓をいじってるようで…
いつになったら�A見たいなことができるのかな?って疑問を持ちましたので。
ド素人ですいません。
0058デフォルトの名無しさん
2009/06/01(月) 00:54:52初めてのPythonなら読破しなくても1/3ほど読めば十分じゃないかな
あとは使えそうなライブラリを探してマニュアルを読む
必要な時間については人それぞれ。数時間、数日、数週間・・・
まあ半年かかるなんてことはないから心配いらないよ
0059デフォルトの名無しさん
2009/06/01(月) 01:01:37>>57はきっと「はじめての」なんでしょうな・・・
0060デフォルトの名無しさん
2009/06/01(月) 01:07:37個人的にちょっと読んだだけですが「みんなのpython改訂版」が読みやすかったのですが
(ちょっとだけしか見てませんが…)
これでもOKですか?これでも1/3くらい読めば、ショボイプログラムが作れますか?
明日買ってきます。
0061デフォルトの名無しさん
2009/06/01(月) 01:14:48しょぼいプログラムを作るのが目的でネットの検索と併用すれば十分かと
0062デフォルトの名無しさん
2009/06/01(月) 01:42:36「はじめての」人柱になってもらおうとか思って
似たタイトルの本があるとはあえて言わなかった。反省している
>>60
1/3じゃ足りないかも。でもたいして問題にはならないよ
2を書くとしたら骨組みはこんな感じ
import os
for i, filename in enumerate(os.listdir(u'.')):
if filename.endswith('.mp3')
os.rename(filename, '%03d.mp3' % i)
0063デフォルトの名無しさん
2009/06/01(月) 02:38:56その辺に転がってるコードが多いのはPython2.x系
言語仕様が一部変わってるから気をつけな
新しいものをとるか古いのを選ぶかは趣味の問題ではあるが
標準以外のモジュールは3.0にはまだ対応してなかったりもするから気をつけなよ
まあ、仕様の変更点を把握しとかないといけないのはどちらを学ぶにしても同じだがね
本はちょっとしたプログラムを書きたいってだけなら挫折しないように薄いのにしときなw
あとはオンラインドキュメントとかで適当に調べつつ作りたいもの作ればいいさ
0064デフォルトの名無しさん
2009/06/01(月) 03:06:12元々
03.mp3
02.mp3
01.mp3
というファイルがあったとき
01.mp3
02.mp3
03.mp3
に名前を付け替えるのって簡単?
0065デフォルトの名無しさん
2009/06/01(月) 03:34:230066デフォルトの名無しさん
2009/06/01(月) 03:36:00条件が良く分からないけど、番号を昇順に変えるの?
何とでも出来ると思うよ。
0067デフォルトの名無しさん
2009/06/01(月) 04:03:0764が言ってるのはファイル名の重複でリネームするのに失敗する問題。
0068デフォルトの名無しさん
2009/06/01(月) 04:04:550069デフォルトの名無しさん
2009/06/01(月) 06:48:480070デフォルトの名無しさん
2009/06/01(月) 07:12:580071デフォルトの名無しさん
2009/06/01(月) 07:22:31それが >>64 >>67 の意図する動作になってるかどうかは微妙
>>54 の2ならそれで良さそう
とりあえず >>64 は仕様を明確にすべき
0072デフォルトの名無しさん
2009/06/01(月) 07:59:170073デフォルトの名無しさん
2009/06/01(月) 08:56:03一般のアルゴリズムが分からないって、言語以前の問題だからw
0074デフォルトの名無しさん
2009/06/01(月) 15:17:180075デフォルトの名無しさん
2009/06/01(月) 15:51:51スレ違いですので
こちらへどうぞ
http://pc12.2ch.net/test/read.cgi/tech/1243159710
0076デフォルトの名無しさん
2009/06/01(月) 21:12:23素晴らしいコードありがとうございます。
勉強中でとても参考になります。完全に理解できていないのが申し訳ありませんが(汗
具体的な例をお願いできますか?
例えば、C:\Documents and Settings\user\デスクトップ\新しいフォルダ
の中に、
abc.mp3
def.mp3
ghi.mp3
jkl.mp3という4つのデータがあります。
これらをソートした順に01.mp3〜04.mp3にリネームする。
宜しくお願い致します。
0077デフォルトの名無しさん
2009/06/01(月) 21:36:39その前に自分で書いたコードを貼ってみて
動かなくても全然構わないから
いきなり答え見たら実力つかないよ
0078デフォルトの名無しさん
2009/06/01(月) 21:47:43すいません。
0079デフォルトの名無しさん
2009/06/01(月) 22:16:23指定ディレクトリ内のファイル一覧を取得する
os.listdir、glob.glob等
ファイル一覧を並び替え
list.sort()
ファイル名を変更
os.rename
その他
os.path.join、os.path.abspath
このあたりを調べればいけるんじゃない?
とりあえずosとos.pathモジュールは一通りリファレンスに目を通しましょう。
0080デフォルトの名無しさん
2009/06/01(月) 22:19:21本当にご親切にありがとうございます。
今日さっそく「みんpy」買ってきました。
面白いですね。まだプログラムって感じではないんですが…
とても参考になりました。
またわからない事がありましたら宜しくお願い致します。
0081デフォルトの名無しさん
2009/06/01(月) 22:36:13mp3以外のファイルがあったら番号とばない?
0082デフォルトの名無しさん
2009/06/01(月) 22:52:35飛ぶね。失礼しました
count = 1
for filename in os.listdir(u'.'):
if filename.endswith('.mp3'):
os.rename(filename, '%03d.mp3' % count)
count += 1
0083デフォルトの名無しさん
2009/06/01(月) 22:57:49ちょっと片言の言語で作ってみましたがrenameでのアイデアが…
なにかヒントをお願いします。
#coding: UTF-8
import os
TargetPath = u'C:\Documents and Settings\user\デスクトップ\Mariah.Carey'
a=FileList = os.listdir(TargetPath)
print u"[曲名一覧]"
for f in a:
print f
else:
print u"以上"
b=len(a)
print u"全部で",b,u"曲"
c=range(1,b+1)
print c,u"までのリストを作成"
ここまででギブ…曲数分の数値をリストで作ってみて対応できればと…その後は…
そもそも間違った考え方なんですかね…ネットで調べながらなのですいません。
0084デフォルトの名無しさん
2009/06/01(月) 23:24:31#-*- coding: utf-8 -*-
import os, sys, time, shutil
from math import ceil, log
def rename_to_number(srcdir, ext):
files = filter(lambda x: x[-len(ext):]==ext, os.listdir(srcdir))
tmpdir = os.path.join(srcdir, 'tmp%s_%s' % (os.getpid(), time.time()))
while os.path.exists(tmpdir): tmpdir += '0'
os.mkdir(tmpdir)
for f in files:
src = os.path.join(srcdir, f)
shutil.move(src, tmpdir)
fmt = '%%0%dd%s' % (ceil(log(len(files),10)), ext)
for i, f in enumerate(sorted(files)):
src = os.path.join(tmpdir, f)
dst = os.path.join(srcdir, fmt % i)
shutil.copy(src, dst)
#shutil.rmtree(tmpdir) # この行を有効にすると作業後テンポラリを削除します。
if __name__ == '__main__':
srcdir = sys.argv[1]
ext = sys.argv[2]
if ext[0] != '.': ext = '.' + ext
rename_to_number(srcdir, ext)
# 使い方。このスクリプトを hoge.py と保存(UTF-8)した場合。
# python hoge.py ターゲットディレクトリ 対象拡張子
# と入力
0085デフォルトの名無しさん
2009/06/01(月) 23:35:15すごい。。。
レベルが違いすぎました。
出直してきます。
恥ずかしいですわ
008684
2009/06/01(月) 23:55:00ファイル名の先頭が 0 になるようにする。(12行目)
× fmt = '%%0%dd%s' % (ceil(log(len(files),10)), ext)
○ fmt = '%%0%dd%s' % (1+ceil(log(len(files),10)), ext)
番号を 0からスタートじゃなく、1からにする。(15行目)
× dst = os.path.join(srcdir, fmt % i)
○ dst = os.path.join(srcdir, fmt % (i+1))
0087デフォルトの名無しさん
2009/06/02(火) 00:01:080088デフォルトの名無しさん
2009/06/02(火) 00:19:050089デフォルトの名無しさん
2009/06/02(火) 17:09:47初歩的な質問で申し訳ありません。
.pyのついたファイルをウィンドウズで実行したいのですが、どのように設定をしたらいいでしょうか?
python-3.0.1をインストールしてみたのですが、どうしたらいいのかイマイチよくわかりません;;
0090デフォルトの名無しさん
2009/06/02(火) 17:16:180091デフォルトの名無しさん
2009/06/02(火) 17:32:05Python 3.0 はプログラミングの初学者には今のところ向いてないよ
>>90 の言う通りにしてコマンドプロンプトの使い方も併せて調べておくといいと思う
0092デフォルトの名無しさん
2009/06/02(火) 18:13:352.6.2ですね。
試してみます。
0093デフォルトの名無しさん
2009/06/02(火) 23:50:54素敵だが初心者にやさしくないなぁ
無駄に丁寧だから本質じゃない部分につい目がいってしまう
0094デフォルトの名無しさん
2009/06/03(水) 01:05:17本当にそうだな。
ただ、あそこまでやるなら、テンポラリディレクトリ作るのに何故
tempfile.mkdtemp()を使わないのかが非常に謎。
0095デフォルトの名無しさん
2009/06/03(水) 07:09:58///)
/,.=゙''"/
/ i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
0096デフォルトの名無しさん
2009/06/03(水) 18:04:51python2.5.3
try:
getattr(obj, 'undefined_method')
except AttributeError:
pass
だいぶ省略していますが、こんな感じのコードがあり、ここでmain内でエラーが発生すると
UnboundLocalError: local variable 'AttributeError' referenced before assignment
と出てしまいます
AttributeErrorが見つからない理由と、そもそもUnboundLocalErrorがなんなのかよく理解出来ていないのですが、
原因をご存知の方いますでしょうか?
009796
2009/06/03(水) 18:24:44その前に書いてあった
except ImportError, AttributeError:
の括弧忘れでした。
0098デフォルトの名無しさん
2009/06/03(水) 18:27:33NameError: とにかくそんな名前知らんよ
0099デフォルトの名無しさん
2009/06/03(水) 19:14:50エラーが出なくなっただけで
解決はしていないと思うよw
0100デフォルトの名無しさん
2009/06/03(水) 19:19:47社会人になってからは言語は一切触れてません。
インフラ側の人間だったのですが、
言語もかじっておきたくpythonをと考えています。
web上の入門サイトをいくつかやってる最中ですが、
いまいち手応えがありません。
そこで、勉強になるような課題?に適したものってなにかありますでしょうか。
また、Django、Ploneも気になっているのですが、
そうした勉強というのは市販されているテキストを一通りできれば
掴めるものでしょうか。
*正直、業務でも活かせることができるまでを
意識した勉強の仕方がわからないのが困っています、、、
0101デフォルトの名無しさん
2009/06/03(水) 19:48:45まず要点をまとめてわかりやすく説明することを勉強しるw
■ このスレッドは過去ログ倉庫に格納されています