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


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

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



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

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

前スレ
くだすれPython(超初心者用) その15
toro.2ch.net/test/read.cgi/tech/1350718465/
関連スレ
Pythonのお勉強 Part48
toro.2ch.net/test/read.cgi/tech/1358750040/
【実験台】 Python 3.0 のお勉強 Part 1 【非互換】
toro.2ch.net/test/read.cgi/tech/1235050215/
◆関連リンク
Python の Home Page
ttp://www.python.org/

892 名前:デフォルトの名無しさん mailto:sage [2013/03/26(火) 22:51:34.35 ]
>>891
問題は起きない
「python3」の名前でpathが通る

893 名前:879 mailto:sage [2013/03/26(火) 23:02:26.32 ]
ありがとうございます

894 名前:デフォルトの名無しさん mailto:sage [2013/03/27(水) 05:35:20.83 ]
>>892
ありがとうございます。
これで安心してインストール出来ます。

895 名前:デフォルトの名無しさん mailto:sage [2013/03/27(水) 15:05:10.25 ]
>>890
Pythonは書きやすいし読みやすいからストレスが貯まり辛いよね
多分Rubyでも同じような印象を受けると思う
PythonとRubyはプログラミングの入り口に最適だと思う

>>891
ちなみにUbuntu12.10だとデフォルトでpython3.2が入ってるので楽だよ
「python3」で3系 「python」で2系にpathが通ってる

896 名前:デフォルトの名無しさん mailto:sage [2013/03/27(水) 15:56:55.95 ]
やはりpythonの本流は2.Xだな

897 名前:デフォルトの名無しさん mailto:sage [2013/03/27(水) 16:05:57.26 ]
>>895
本当に入ってました!
ありがとうございます。

898 名前:デフォルトの名無しさん mailto:sage [2013/03/27(水) 18:40:07.30 ]
疑っとったんかい!

899 名前:デフォルトの名無しさん mailto:sage [2013/03/27(水) 21:31:23.64 ]
>>898
いえ、嬉しかっただけです。

900 名前:デフォルトの名無しさん mailto:sage [2013/03/27(水) 21:36:05.19 ]
疑って掛かるのはいいことだぞ〜
ここをどこだと思ってる



901 名前:デフォルトの名無しさん mailto:sage [2013/03/27(水) 22:21:01.30 ]
下のphpコードpythonでどう書くのか教えてください!

class A
{
private $str;
public function setStr($s){
$this->str = $s;
}

public function getStr(){
return $this->str;
}

protected test1($n) {
return ($n + 10) * 2;
}

private test2($n) {
return $n * 2;
}


}

902 名前:デフォルトの名無しさん mailto:sage [2013/03/27(水) 22:26:18.39 ]
class A:
 def __init__(self):
  self.__str = None
 def setStr(self, s):
  self.__str = s
 def getStr(self, s):
  return self.__str
 def test1(self, n):#protectedは無い
  return (n + 10) * 2
 def __test2(self, n):
  return n * 2

903 名前:デフォルトの名無しさん mailto:sage [2013/03/28(木) 00:07:14.85 ]
メソッド名がアンダースコアから始まるものは外部に非公開とみなすコーディングスタイルがある(pep8)

904 名前:デフォルトの名無しさん mailto:sage [2013/03/28(木) 00:39:53.91 ]
>>902-903
JavaとPHPからPythonくるとなんか違和感がありますがこういうものって覚えるしかなさそうですね
どうもありがとうございます

905 名前:871 [2013/03/28(木) 13:02:51.85 ]
>>904

CとPythonしか書いたことのないあっしですが、上の例を拝見するとPHPよりPythonの方がすっきりしてるように見えるなぁ....。
まぁ、慣れの問題なんでしょうけど....。
やたらとself連呼なのが嫌だってアンチの人は言うけど、どうなんでしょね? 少なくとも、あっしは気になりませんが。

906 名前:デフォルトの名無しさん mailto:sage [2013/03/28(木) 13:58:33.69 ]
windows python3.3でpyyamlを使う場合はpyyaml.org/download/pyyaml/の中でどれをダウンロードしたらいいですか?

907 名前:デフォルトの名無しさん mailto:sage [2013/03/28(木) 14:10:35.59 ]
>>906
3.08以上のやつ

908 名前:デフォルトの名無しさん mailto:sage [2013/03/28(木) 14:27:24.20 ]
pyyaml.org/wiki/PyYAMLにセットアップ方法が書かれているのですが
PyYAML-3.10.zipをダウンロードしました
python setup.py install
python setup.py --with-libyaml install
ってやるとインストールようなんですが、たとえばPython3.3をアンインストールしたらpyyamlもアンインストールされるのですかね?
Pythonを入れなおした場合、またpyyamlはインストールしなおさないといけないのでしょうか?

909 名前:デフォルトの名無しさん [2013/03/28(木) 14:34:54.21 ]
>python setup.py --with-libyaml install
>ってやるとインストールようなんですが、たとえばPython3.3をアンインストールしたらpyyamlもアンインストールされるのですかね?

されない

>Pythonを入れなおした場合、またpyyamlはインストールしなおさないといけないのでしょうか?

しなおさないといけない

910 名前:デフォルトの名無しさん mailto:sage [2013/03/28(木) 16:11:05.20 ]
ありがとうございます



911 名前:デフォルトの名無しさん mailto:sage [2013/03/29(金) 16:02:49.59 ]
パーフェクトPythonを見ながらUbuntuにインストールしているのですが

$ apt-cache show python3 | grep 'Version'
$ sudo apt-get install python3.3 python3.3-dev

$ mkdir projects
$ cd projects

ここから先ができません。

$ pyvenv default
$ source default/bin/activate

$ wget python-distribute.org/distribute_setup.py
$ python distribute_setup.py
$ easy_install pip

912 名前:デフォルトの名無しさん mailto:sage [2013/03/29(金) 20:54:27.59 ]
>>911
書いてあるコマンドは実行できるよ
どこが出来ないのかわからないから人に伝える時の方法を教えよう

「このコマンドを打ったら」「こんなエラーが出ました」
「エラー内容:表示された英語全部(長い時は最初と最後の100文字くらい)」

913 名前:デフォルトの名無しさん mailto:sage [2013/03/29(金) 22:17:09.44 ]
CentOS6.4のpython2.6.6を使って、スクリプト内で__debug__の切り替えを行おうと思って、

#!/usr/bin/env PYTHONOPTIMIZE=1 python
print __debug__

みたいなファイルを作って実行すると固まるし、

#!/usr/bin/env python -O
print __debug__

みたいにすると「そのようなファイルやディレクトリはありません」と言われて動かない。
同じファイルを手元のMac(python2.7.3)で動かすと問題なく動くんだけど、なんででしょう?

914 名前:デフォルトの名無しさん mailto:sage [2013/03/29(金) 22:47:59.29 ]
自己レスです。
ググってたら、CentOSだと #! でのenvの引数は1つしか指定できないみたい。

原因は分かったけど、切り替えの解決法が分からない。
rubyだと

#!/bin/sh
exec ruby -x "$0" "$@"
#!ruby
puts 'Hello world!'

みたいな記法があるみたいだけど・・・・

915 名前:デフォルトの名無しさん mailto:sage [2013/03/29(金) 23:52:24.99 ]
自己レスです

#!/usr/bin/env bash
''''exec python -O -- "$0" ${1+"$@"} # '''
print __debug__

これで出来ました。

916 名前:デフォルトの名無しさん mailto:sage [2013/03/30(土) 04:15:51.59 ]
Python関係ないね

917 名前:デフォルトの名無しさん mailto:sage [2013/03/30(土) 07:53:05.90 ]
いや、シェルスクリプトとしてもPythonスクリプトとしても動くスクリプトになってる

918 名前:911 mailto:sage [2013/03/30(土) 11:03:45.47 ]
>>912
説明不足ですみません
pyvenv コマンドが見つかりませんとでました

調べたら
pyvenv-3.3 default
でできました。

python distribute_setup.py
をすると

/local/bin /local/libにインストールされるバグ?
bugs.python.org/issue16480

easy_install pip
パスがないためインストールできないようです。

919 名前:デフォルトの名無しさん mailto:sage [2013/03/30(土) 15:05:57.45 ]
>>918
コマンド打ってエラー出たらそのエラー書かないと

ubuntuならeasy_install使いたいなら
$ sudo apt-get install python-setuptools

920 名前:918 mailto:sage [2013/04/02(火) 13:15:34.34 ]
>>919
インストールしましたがpython3.3は未対応のようです。



921 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 20:17:54.74 ]
ubuntuってpython3.2じゃない?3.3のパケジはPPAか何か?

922 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 20:30:48.26 ]
調べたよ PPA Py3.3 Default, Py3.2 Supported
https://launchpad.net/~ubuntu-rebuilds/+archive/py3.3

$ sudo add-apt-repository ppa:ubuntu-rebuilds/py3.3
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install python-pip

923 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 21:32:13.10 ]
Linuxはこの辺がやたらと面倒だねえ
Windowsならインストーラ一個落として
Wクリ一発で済むのに

924 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 21:33:39.37 ]
linuxでもyumですぐじゃん

925 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 21:37:38.77 ]
>>923
いやこの辺はWindowsのほうがよっぽど面倒。

926 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 21:49:16.43 ]
>>925
インストーラWクリの
どこがどう面倒なのか説得力ある説明よろしく

927 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 21:52:38.95 ]
>>926
ボタンのある位置までマウスポインタを動かして、そこからずれない様に
マウスを固定しつつ、すばやく二度もクリックしなければいけないのに
どこがどう面倒じゃないのか説得力のある説明よろしく

928 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 21:55:48.52 ]
そもそも「パーフェクトPython」を買ってLinux使っている人
の質問じゃないという
ここが超初心者スレであっても

929 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:00:58.86 ]
>>923
>>911はWindowsだとWクリック一発で済むの?ほんと?

930 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:03:59.08 ]
インストーラのウィザードをクリックで進めなきゃいけないよ
オプション選択もある



931 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:06:54.37 ]
現にトラブってんだから大人しく窓使ってろって話

932 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:06:59.42 ]
>>929
WindowsPCの一台くらい持ってるだろ?
やってみれよ。

933 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:13:06.44 ]
Linuxは中でPythonが非常に重要な役割で動いてる
よってデフォルトじゃないバージョンを入れるには注意しないと環境が壊れる
WindowsはPythonがよそ者だから何をしても壊れない

934 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:13:16.10 ]
本が意味も無くLinuxと3.3を薦めてんだろ
読んでないけど想像はつくな

935 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:18:45.89 ]
パーフェクトPythonのLinuxの説明はめちゃくちゃ
良い子は真似すんなよ

936 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:20:07.06 ]
気になるから立ち読みしてボロクソに批判しようかな

937 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:31:52.65 ]
パーフェクトPythonは最後まで立ち読みしてきたけどクソ技術書だねこれ
読み終わった後レジの横にあったゴミ箱に捨ててきた

938 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:40:38.13 ]
>>933
よそ者の在日民主が暴れても国は揺るがないが
自民が売国すると国が死ぬみたいなものだな

939 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:47:53.56 ]
>>926
そもそもソフトごとのインストーラなんてものがない。
パッケージマネージャ使う。
新たにインスコしたければ、他のいろんなパッケージと同様にパッケージマネージャから
インスコしたいパッケージ選ぶだけ。
バージョンが上がればパッケージマネージャが他のパッケージと一緒にバージョンアップ
してくれる。
Lunixでpipやeasy_install使うのはパッケージマネージャの管理外になるので邪道。

>>933
使ったことない奴が何言ってんのよ。

940 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:50:48.42 ]
パッケージリポジトリに登録されてるバージョンが最新じゃなかったりして
自分でビルドする羽目になるよね(´・ω・`)



941 名前:デフォルトの名無しさん [2013/04/02(火) 22:54:48.43 ]
Linuxは中でPythonが非常に重要な役割で動いてる
よってデフォルトじゃないバージョンを入れるには注意しないと環境が壊れる
自分で使うバージョンは自分でビルドしたほうが安心

942 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:55:13.43 ]
>>939
こいつ使ったことない絶対w
pipはpipでアップデートするんだよw
パケジなんてなくても.tar.gzからでもインスト出来るし管理出来るかどうかだろ?
何が邪道だw Linux使えてない人が言うでない

943 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 23:04:36.89 ]
ディストロのリポジトリに入ってるのが古かったり
Pythonのバージョン上げると問題が出てきたりするから
上の例ではvenvなんかで仮想環境を掘ってるんだろう

と思うんだけど本の現物を見てみないとなんとも

944 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 23:10:53.89 ]
後方互換性無くしたバカは切腹しろ

945 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 23:40:26.88 ]
>>942
Linux使ったことないおまいさんには理解できない世界かもしれんけど、
Linuxではそのシステムにインストールされてるパッケージは全部パッケージマネージャが管理するのが前提なんだよ。
パッケージマネージャが各パッケージの依存関係も管理するから。
pythonのパッケージもディストリビューションのリポジトリに入ってるのをパッケージマネージャでインスコする。
その範囲であればディストリビューションが動作を確認してることを意味する。
それ以外の手段でインスコしたパッケージは自分で管理しなければならない。
UbuntuなりFedoraなり大体のディストリビューションはウェブからリポジトリのパッケージ検索できるから確認してみそ。

946 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 23:43:08.79 ]
いやいや独自のパッケージマネージャを使ってるPython使っといてそれはちょっと…

947 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 00:00:47.59 ]
例えばブラウザのアドオン・拡張機能・プラグインは
独自インストールですしお寿司

948 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 00:05:37.80 ]
>>918
(default) $ python distribute_setup.py
がうまくいったとして、

(default) $ echo $PATH
(default) $ ls -l default/bin
(default) $ which easy_install

の入力と出力それぞれ貼ってみて

949 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 00:39:10.40 ]
バグほったらかしのdebとか産廃だから処分してくれないとなあ

950 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 00:48:12.94 ]
つかメンテナが飽きて保守されなくなりました通知がマジで欲しい



951 名前:918 mailto:sage [2013/04/03(水) 09:36:07.17 ]
>>948

$ echo $PATH
/home/ubuntu/projects/default/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

$ ls -l default/bin
合計 8
-rw-r--r-- 1 ubuntu ubuntu 2150 3月 29 10:33 activate
-rwxr-xr-x 1 ubuntu ubuntu 121 3月 29 10:33 pydoc
lrwxrwxrwx 1 ubuntu ubuntu 9 3月 29 10:33 python -> python3.3
lrwxrwxrwx 1 ubuntu ubuntu 9 3月 29 10:33 python3 -> python3.3
lrwxrwxrwx 1 ubuntu ubuntu 18 3月 29 10:33 python3.3 -> /usr/bin/python3.3

$ which easy_install
/usr/local/bin/easy_install

952 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 10:36:31.78 ]
>>951
$ source default/bin/activate して仮想環境が有効になった状態で
(default) $ python distribute_setup.py したのなら
easy_install は default/bin に入るんじゃないかと思う

というわけで仮想環境が有効になっていない状態で
$ python distribute_setup.py した可能性はない?

953 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 11:40:03.30 ]
>>911,918,920,951
おっと先に回答があったようですが
Python3.3のvenvを試す
ttp://ymotongpoo.hatenablog.com/entry/2012/09/03/002604

$ pyvenv-3.3 default
このコマンドで default/ というディレクトリを作成し
default/ 以下のPython環境を3.3としている

ただこれ、このディレクトリに入ったら自動でその環境になるわけではなく
そこに作られた default/bin/activate を読み込むことでその環境になる
$ default/bin/activate を実行すると仮想環境(今回は3.3)になり
環境から抜けるには $ deactivate
簡単に理解するには以下のようにインタプリタを呼び出してみるとわかる

$ default/bin/activate
----------------------------------------
(default) $ python
----------------------------------------
Python 3.3.0
>>> exit()

(default) $ deactivate
----------------------------------------
$ python
----------------------------------------
Python 2.7.3
>>> exit()

954 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 11:55:21.13 ]
>>953
bin/activate は直接実行ではなく source しなきゃいけない
というか直接実行できないようになってるはず

955 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 12:01:07.74 ]
$ python -V
Python 2.7.3
$

956 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 12:47:57.72 ]
てかまだvirtualenv使ってる方がいい
pysetupもまだだし

957 名前:918 mailto:sage [2013/04/03(水) 14:10:35.24 ]
>>952
ubuntuを再インストールして試してみましたが
/local/binにインストールされます。

コマンド

$ sudo apt-get install python3.3 python3.3-dev

$ mkdir projects
$ cd projects

$ pyvenv-3.3 default
$ source default/bin/activate

$ wget python-distribute.org/distribute_setup.py
$ python distribute_setup.py

958 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 15:27:10.10 ]
>>957
source したらプロンプトの左側に (default) って出てない? 出てるなら端折らないで

出てる状態で su/sudo つけずに $ python distribute_setup.py して
/local/bin なんて場所に easy_install が入っちゃうのならお手上げ

959 名前:918 mailto:sage [2013/04/03(水) 16:27:41.62 ]
>>958
$ sudo apt-get install python3.3 python3.3-dev

$ mkdir projects
$ cd projects

$ pyvenv-3.3 default
$ source default/bin/activate

(default) $ wget python-distribute.org/distribute_setup.py
(default) $ python distribute_setup.py

easy_installは/local/binにインストールされます。

(default) $ ./default/local/bin/easy_install pip

pipも/local/binにインストールされます。

960 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 17:04:05.97 ]
su/sudoしてないのにインストールできるわけないじゃん



961 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 17:37:54.54 ]
>>959
/local/bin って ./local/bin のことか…
やっつけな回避策でいいなら bin/activate を開いて

PATH="$VIRTUAL_ENV/bin:$PATH"
PATH="$VIRTUAL_ENV/local/bin:$PATH"

とかすればとりあえず local/bin にパスは通る

962 名前:918 mailto:sage [2013/04/04(木) 09:15:42.65 ]
>>960
sudo すると
/usr/local/binに2.7がインストールされました。

963 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 09:16:28.12 ]
>>961
説明不足ですみません。
pyvenvの状態では
(default) $
/home/ubuntu/projects/default/local/bin

にインストールされます。

$ pyvenv-3.3 --clear default

にすると環境全部消えるので書き換えたPATHも戻ってしまいますが
対策されるまでしばらくこれで使ってみます。
どうもありがとうございました。

964 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 09:40:13.01 ]
sudo python3でやったか?

965 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 09:52:03.01 ]
sudoしたらだめ。システムに影響が出ないようにvenvで仮想環境作ってるんだから

966 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 19:54:39.42 ]
狙ったバージョンをOSにインスコするだけなのに
何日もかかるって…
UNIX系OSの暗黒面が大爆発している例だな。

967 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 20:07:26.02 ]
>>953 のサイトのやり方なら問題ない
バグというか仕様なんだから
ubuntu で distribute_setup.py 使わなければOK
.tar.gz 落として setup.py install

968 名前:829 [2013/04/04(木) 20:39:35.04 ]
クラスを要素に持ってたリストを消去するのに
hoge=[]と del hoge[:]で挙動が異なるんだなぁ、奥が深い....。この数日ハマった...。

969 名前:968 [2013/04/04(木) 20:41:04.90 ]
↑すみません。829じゃないのに間違えました。

970 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 21:15:32.60 ]
パッケージマネージャ使わないとか死ねよ
ぷんすか



971 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 21:18:40.02 ]
死ねよは言い過ぎじゃ
>>953 のサイト見た?
pyvenv でヴァーチャル環境でローカルにインスコ出来て
--clear できれいサッパリ削除出来るってお得じゃないか

972 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 21:21:21.67 ]
いや随分パッケージ管理システムにご執心な奴がいたから
気持ちを代弁してやっただけよ

973 名前:918 mailto:sage [2013/04/05(金) 09:52:58.94 ]
>>967
ソースから入れても./local/binに入ります。

$ pyvenv-3.3 default
$ source default/bin/activate
$ curl -O "pypi.python.org/packages/source/d/distribute/distribute-0.6.35.tar.gz"
$ tar xzf distribute-0.6.35.tar.gz
$ cd distribute-0.6.35
$ python setup.py install

974 名前:デフォルトの名無しさん mailto:sage [2013/04/05(金) 13:24:41.23 ]
>>973
python distribute_setup.py も結局 python setup.py install するのでそうなるだろう
ところで pip で入れたモジュールはちゃんと使えてる?

975 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 16:36:37.81 ]
質問です
ある文字列 ( 0-9 a-f A-F のみが含まれる)
'123456789abcdeff0123456789abcdef' ...
から
[0x1234, 0x5678, 0x9abc, 0xdeff, 0x0123, 0x4567, 0x89ab, 0xcdef] ...
という 2byte 毎の値のリストを得るにはどんな書き方がありますか?
文字列の長さは常に 8 の倍数ですが最大の長さは不明です(どこまでも大きくなる可能性あり)

976 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 16:56:25.98 ]
どこまでも大きくなるってのは例えばSocketStreamがReadしないとデータがあるかどうか分からないような状況を言っているのか?
それとも1024か32768か2^32か不明なだけで、処理するときには判明しているのか?

977 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 17:02:20.74 ]
>>975
>>> s = '123456789abcdeff0123456789abcdef'
>>> [int(s[i:i+4], 16) for i in range(0, len(s), 4)]
[4660, 22136, 39612, 57087, 291, 17767, 35243, 52719]
>>> [hex(int(s[i:i+4], 16)) for i in range(0, len(s), 4)]
['0x1234', '0x5678', '0x9abc', '0xdeff', '0x123', '0x4567', '0x89ab', '0xcdef']

これでいいのかなあ。なんかやりたいこととは違う気がしなくもない

978 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 17:02:46.49 ]
いや、そもそもPythonの文字列は長さが判明してないとおかしいから、
質問者が文字列から、と言っている以上、前者ではありえない。

['0x'+s[i:i+4] for i in range(0,len(s),4)]

979 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 17:06:10.24 ]
f = StringIO(s)
[int(i, 16) for i in iter(lambda: f.read(4), '')]

980 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 17:07:42.97 ]
import struct, binascii
struct.unpack('>%dh' % (len(s) / 4), binascii.a2b_hex(s))



981 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 17:13:59.20 ]
みなさんありがとうございます
stream から読むのをイメージしていました
>>979 さんのが一番良いみたいです

あとお願いついでですが
'123456789abcdeff0123456789abcdef' ...
から
[(0x1234, 0x5678), (0x9abc, 0xdeff), (0x0123, 0x4567), (0x89ab, 0xcdef)] ...
の様にペアにしたタプルで得るにはどう書けば良いですか?

982 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 17:20:20.54 ]
[(int(i, 16),int(j, 16)) for i,j in iter(lambda: (f.read(4),f.read(4)), ('',''))]

983 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 17:22:52.44 ]
import StringIO, struct, binascii
s = '123456789abcdeff0123456789abcdef'
f = StringIO.StringIO(s)
[struct.unpack('>2h', binascii.a2b_hex(i)) for i in iter(lambda: f.read(8), '')]
[(4660, 22136), (-25924, -8449), (291, 17767), (-30293, -12817)]

984 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 17:28:53.08 ]
くだすれPython(超初心者用) その17
toro.2ch.net/test/read.cgi/tech/1365323116/

985 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 17:33:54.01 ]
おつぱいそん

986 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 17:35:41.43 ]
g = (int(i, 16) for i in iter(lambda: f.read(4), ''))
# itertools レシピのgrouper
list(itertools.izip_longest(*([g]*2), fillvalue=None))

987 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 17:46:08.46 ]
int(i, 16) のところで符号付整数にするにはどうすればいい?

988 名前:デフォルトの名無しさん [2013/04/07(日) 17:48:13.75 ]
python3を積極的に導入する理由ってある?
python2でできない、あるいは難しいこととかあるのかな

989 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 17:50:09.54 ]
ちょっと訂正
int(i, 16) のところで16ビット符号付整数にするにはどうすればいい?

990 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 17:57:27.42 ]
32767より大きいなら65536を引く



991 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 18:03:21.42 ]
それでもいいんだけど
int() になんか便利なオプションあるのかなと思って

992 名前:デフォルトの名無しさん mailto:sage [2013/04/07(日) 18:04:41.99 ]
>>982 >>983 >>986
出来ました
ありがとうございます






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

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

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