くだすれPython(超初心者用) その39
■ このスレッドは過去ログ倉庫に格納されています
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。
エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで
前スレ
くだすれPython(超初心者用) その38
https://mevius.5ch.net/test/read.cgi/tech/1526522954/ >>386
ありがとうございます 納得しました
次はエラーメッセージも晒します
>>388
人になつかれたことなさそうな人がなんか言ってて笑える 分からん。。。
もう一度、プログラムを見つめ直してみる。
ポジション取るんだけど、バックテストで資金が上昇してもロットは一緒。
>>389
藁 なんで、コンソールなんか使うのか?
Ruby, Python でも、VSCode を使え!
拡張機能のCode Runner で、何も考えずとも、右クリックメニューから実行できるわい! 関数呼び出しの構文について教えて欲しいんだけどさ
AAA(BBB: CCC)とAAA(BBB=CCC)って一緒なの? AAA(**{BBB: CCC})とAAA(BBB=CCC)
はホボ一緒だけど
関数の定義のされ方によっては違う djangoでゲーム作ってる方っています?
作ってるなら、どんな感じのゲームを作ってるか知りたいです
djangoでのwebアプリ制作の練習も兼ねて、ログインとかデータ保存のできるブラウザゲームを作ろうと思ってるところなんですが、個人でフレームワークを使っての開発は手に余るかな、と気になって…
JavaScriptの方が管理しやすいかなぁ >>399
Dangoでゲーム?
フロントエンドどうすんの?
JS必須だろ ほんとだ、結局JavaScriptが必要ですね
それに、誰かにやってもらう場合だと、サーバー用意するか、相手の方にもPythonいれてもらわないとダメだ… 既に環境を構築してあるDockerを使え
便利だぞ webapiで取得したjsonのログデータを取得したあとcsvに変換するプログラム作ってます
pandas使ってappendで1行毎dataflameを追加していく方式でやっているんですが処理時間がかなり掛かってしまいます
jsonをcsvに変換する良い方法他にないですかね?
jsonはかなり深くネストされておりfor文使って特定のキーの場合のみdf追加としているので処理が重そうです
csvは10万行近くになります 元のjsonファイルと出力したいcsvのイメージ貼ってみ 1レコードあたりの行数に目途が付くなら
単にテキストファイルをシーケンシャルに読んで
レコード毎にループして正規表現とかで処理するか
丸ごと一個のjsonを読むんじゃなくて
json の visits [] の中身だけに適用して
やっぱりレコード毎にループで処理 ちょっと何言ってるか分からないです、もう少しかみ砕いてほすぃ >>408
全体的にpandasは使わずに
正規表現などを使った自前の処理でカンマ区切りのテキストを生成して
テキストファイルに追記モードで行を追加していけば処理が軽くなるんじゃね
ということ
あと、countryとcountryCodeが常に同じペアになるなら長い方を削除するとか
"os": "Windows"を"win"とか"w"に変換するとかで書き込み量を減らせば
多少早くなるかも jsonのobjectって結局馬鹿デカいリストだから
全部pandasに食わせるのは非効率 >>407
>>409
ありがとうございます
目処は付かないですね 25000件のjsonを中の配列単位で分けていくと10万行になったて感じですので…
pandasは勝手に軽いものと思ってたんですがそうでは無いのですね
もう少し自力で試しつつ、無理そうであれば別の方法探してみます
回答ありがとうございました 25000件で10万レコードって意味なら
1レコードあたりたったの4行だぞ
大したことないじゃん anaconda環境でnotepadでプログラム書くのできますか?
Jupiter使ったほうが良いでしょうか? メモ帳は、プログラミングに使ったらダメ!
BOM付きUTF-8 になるから、バグる。
BOMなしUTF-8(UTF-8N)にできるエディタを使うべき!
今は、すべての言語で、VSCode を使う >>415
ありがとうございます。PCが古いので軽いの探します。 >>417
メモ帳のような気楽に使える軽いWindows用エディタでTeraPadがあるよ
BOMなしUTF-8にも対応してて、設定することでデフォルトで使う文字コードや改行文字などを指定できる
いろいろな言語の予約語の強調表示にも対応してる
TeraPad
https://www.vector.co.jp/soft/win95/writing/se104390.html >>415
すいません、ありがとうございます。
それとパスが通ってなくコマンドプロンプトからpythonと入れても起動できなくて、anaconda3\pythonだと起動するのですが。
環境変数にC:\Anaconda3;C:\Anaconda3\Scripts;C:\Anaconda3\Library\bin;など色々試してもダメでした。
英語のサイトとかを見てもできなくて、なんか根本的な所が足りないと思います。
なにか根本から勉強できるサイトはないでしょうか?英語でもなんとか頑張ります。 Python と Javascript ではじめるデータビジュアライゼーションの50ページです
https://ideone.com/Xv83M6
28行目でエラーになってしまいます。
Traceback (most recent call last):
File "./hoge.py", line 28, in <module>
cols.sort()
AttributeError: 'dict_keys' object has no attribute 'sort'
何がいけないんでしょうか? 'dict_keys' オブジェクトは 'sort' 属性をもっていない
sortメソッドはおそらくリストオブジェクトのメソッドだろうから
dict_keysオブジェクトをlistオブジェクトにしたら動くと思うよ >>417
MeryやgPadがおすすめ
TeraPadはUTF-8で読み書きはできるけどShiftJISに無い文字は扱えないのでおすすめしない >>422
どうもありがとうございます
list()で括ったらうまくいきました
3年くらい前の本なんですが、Python2だとこれでも動いたのかそれとも誤記なのかどっちでしょうか?
次のページで、printする際に最後にコンマを付けると改行されないと書いてあったけれど、python3ではコンマ有る無しで表示結果は変わりませんでした。
print(hoge), # こんな感じで 漏れは、TeraPad は、メモ書きに使っている。
アプリのサイズが小さい
ただし、一部の文字が使えない。
中国の地名の「深圳」みたいな文字が「深?」になる >>424
詳しくはpython2とpython3の違いでググってね >>419
例えば、コマンドプロンプトで、where notepad
と入力すると以下のように、メモ帳の実行ファイルのパスが表示される
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
同様に、where python と入力すれば?
これで正しく表示されないのなら、
python.exe があるフォルダを、ユーザー環境変数PATH に追加する
環境変数PATHをいじるという事は、全システムの挙動を変える、危険な行為だから、
その知識がないと、開発なんてできない! >>424
3年前でpython2なのか、スゲー本だな
訳注ぐらい入れれば良いのにね
python3だとprint(hoge end='') いけねカンマ抜けた
print(hoge, end='') >>426
>>428
>>429
どうもありがとうございます。
2と3の違いググりました。
listで括らない方法はPython2でのやり方、printの最後のコンマもPython2でのやり方なんですね
2016年7月に原書が出て2017年8月に日本語版が出た本です。
今見たらprintの訳注が載ってたんですが、コンマはPython2でのやり方で3では使えないと言った事は書かれてありませんでした。
print(hoge, sep='')だとよりPythonらしい書き方だという風に書いてありました。 >>427
ありがとうございます。
ずっとやってましたが、色々と調べててもわかりそうにありません。
anaconda3\pythonで動くのに、whereでpythonは出てこず、Path設定してもダメです。
ほんと基本がわかってないと思うので、pathにチェック入れてanacondaを再インストールしてみようと思います。
自分でいじるのは、知識をどうにかしてつけてからにします。 >>431
Pythonで何をしたい?機械学習関係ならGoogle Colabがお手軽 Anacondaのデフォインストール先C:\Users\<ユーザー名>\Anaconda3じゃん
C:\Anaconda3にパス通しても動かなくて当たり前
コマンドプロンプトからやらずにスタートメニューのAnaconda Promptから開けばパス通ったコマンドプロンプトが開く >>432
将来的に検索もできる対話型AIを作りたいです。
>>433
その当たり前がわからなくて、色々サイトみてて当たり前にできてるようなので、問題解決しないとダメなのかなって思ってしまいます。
パスが通ったとか、コマンドプロンプトとanaconda pronptがどういったものかもわからない状態です。
一つ一つがどういったもので、どう動いてるとかから勉強したいと思います。 Linux の基本コマンドとか、環境変数PATH など、
OS の基礎を知らない人は、開発者になれない
情報処理資格とか、コンピューターリテラシーが必要
仮想環境では、activate を実行したときだけ、
環境変数PATH に追加するようなプログラムもある
activate する前には、python というコマンドは実行できないが、
activate した後には、python というコマンドが実行できる >情報処理資格
Linux とは関係ない
開発に必要ということは同意 EXCELを操作できるライブラリopenpyxl(ver2.3.0-1)なんですが行の挿入でエラーになります。
import openpyxl as py
wb = py.load_workbook('aa.xlsx')
ws = wb.active
ws['A1'] = 'NURUPO'
ws.insert_rows (1)
wb.save('aa.xlsx')
insert_rowsじゅないの? re.searchでグループ化したものを取り出す時に
?P<name>で出来たのですが
re.subと同様に通常の正規表現の「\1」のように
書く書き方は出来ないですか? よろしくお願いします。 >440
> m = re.search("b(.)", "abcdefg")
> print(m.group(1))
c Py_INCREF()を呼ぶタイミングを教えてください 下のようなコードを書いたとして、
mainの中でfunc1が呼ばれない場合でもhogeはimportされますか?
func1はテスト用に置いてるだけで普段は使わない関数なので普段は余計なhogeをインポートされたくないのですがやはりコメントアウトしなきゃですかね?
def func1():
import hoge
...
def main():
... >mainの中でfunc1が呼ばれない場合でもhogeはimportされますか?
されないよ ためしてみそ ありがとうございます!
確かめたくても方法が分からなかったですので。助かりました >>448
>>445の状態で、importしてないと呼び出せない機能をmainに書き込む
たとえば
def func1():
import re
re.compile('hoge')←これはfunc1をよんでくればエラーしない
def main():
re.compile('hoge')
↑func1をよんでないのにこれ書いたらエラーする その理屈だと一回呼んで戻ってきたら使えることになるな >>452
あー
そのはっそうは なかったw
450のかき方(インデントは正しくできているものとしてクレン)したら、
func1の中でしかreのimportは効いてナインかな ちょっとちゃんと実験してみるは... 三 ( ´D`) ( ・∀・)ノフォラァヨ!!---===≡≡≡ ttp://dpaste.com/18SSZEP :main内でエラーするかきかた つづき
ttp://dpaste.com/17A5RJ3 :やっぱりmain内でえらーしますた (この はっそうは なかった)
けつろん
>450の注釈はまちがいまくりだな!ゲヒャ(∀・∀)
>>452の疑問はどんぴしゃごもっともだった けつろん
> 450のかき方(インデントは正しくできているものとしてクレン)したら、
func1の中でしか
reのimportは効いてナイン 結局スコープ内でしか有効じゃないから確かめる方法は無いってこと? >>460
>>449
キャッシュで判る
実行前にキャッシュを消して
実行後にキャッシュが出来ているかを見れば
読み込まれたか無視してるかは判る キャッシュはどうやって見れますか?
mainでキャッシュ見れる関数を書くのですか? マジでアホの考えなんとやらだ
importするとクラッシュするモジュールを用意して
func1からimportしてみりゃーいいだろ
クラッシュすればimportされてるし、しないならimportされていない importするとクラッシュするモジュールが発見出来ませんでした・・
よければ名前を教えて貰えますか?pipで入れられたらなおありがたいです。 importするmoduleを自分で書くなら
moduleの初期化時にprint('読まれたよ!')って書いて置けば桶 >>460
スコープ内で有効だから確かめられないではなくグローバル変数にすれば良いのでは
def func():
import re as _re
global re
re = _re
def main():
func() #コメントアウトするとprintでエラー
print(re) def main():
#func() #func()無関係にprintでエラー
import re as _re
print(re) 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。 自作クラスのインスタンスが持ってる変数を全て、保存しておいた値に戻すようなコードを書きたいのだけれど、どうやって書けばいいかな?
ある時点の値にロールバックしたいということなのだけれど、継承していてもちゃんと動作するようにしたい
想定している処理はこんな感じ
class A:
def rollback(self):
全部のインスタンス変数を self.backup の値に戻す
def make_backup(self):
self.backup = バックアップを作成
class B(A):
def proc(self):
self.make_backup()
# なんか処理
self.rollback()
設計が悪いと感じたらなにか代替案を教えていただければ嬉しいです あの、プログラム終わったら次のプログラムを起動したいのですがどうやったら開けますか?
最後にはシャットダウンしたいです。
p1.py実行
→最後の行でp2.pyを呼び出す
→p2.py実行
...
→最後の行でpn.pyを呼び出す
→pn.py実行
→最後の行でシャットダウン
こんな感じでやりたいです。 >>476
それチェーンにしないとダメなの?
普通にp1.py, p2.py, ..., pn.pyを次々に呼び出して最後にシャットダウンするシェルスクリプトなりバッチファイルなりを書けばいいような気もするんだが >>474
>>481です。知ったかぶりしてすみません。グローバル変数ではなくクラス変数でした。
test.pyで
class MyClass:
commonVALUE=0
def __init__(self,initv):
self.value=initv
def p(self):
print(f'instance value= {self.value}')
print(f'class value= {MyClass.commonVALUE}')
def bkup(self):
MyClass.commonVALUE=self.value
def bkload(self):
self.value=MyClass.commonVALUE
としといて
>>> from test import *
>>> a=MyClass(100)
>>> b=Myclass(0)
>>> a.bkup()
>>> b.p()
instance value= 0
class value= 100
>>> b.bkload()
>>> b.p()
instance value= 100
class value= 100
この後で
>>> c=MyClass(-1)とあらたにインスタンスを作っても
>>> c.p()
instance value= -1
class value= 100
で、クラス変数は0にはならないみたい。 行数制限のため連投ですみません。
継承も大丈夫です。
>>> class B(MyClass):
... def dec(self):
... self.value-=1
>>> d=B(1)
>>> d.p()
instance value= 1
class value= 100
>>> a.bkup()
>>> d.p()
instance value= 1
class value= 100
>>> d.bkload()
>>> d.dec()
>>> d.p()
instance value= 99
class value= 100 >>483
それじゃクラス共通になってまうやん
インスタンス毎にバックアップデータ持てないから意図と違うと思う
>>474 で良いと思うけど、何を懸念してるのかを書くともっといい案をもらえそう >>486
クラスと継承クラス共通でバックアップって意味じゃないの? そりゃスマンコってす
...
各インスタンスごとのバックアップを作って、一括でpush/popしたいなら、
リストの要素を各インスタンスをにしといて、
for i in in instance_list:
i.backup()
とかにすればいいだけなんでねの? ■ このスレッドは過去ログ倉庫に格納されています