くだすれPython(超初心者用) その39
■ このスレッドは過去ログ倉庫に格納されています
このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>985 辺りで 前スレ くだすれPython(超初心者用) その38 https://mevius.5ch.net/test/read.cgi/tech/1526522954/ >>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() とかにすればいいだけなんでねの? >>487 push-popと言いながらプログラムはpush-popじゃないのはわざと? def 関数(arg1,arg2): ゴニョゴニョ return ←これが全く理解できないんだけど、目からウロコみたいなページみたいなのないです? returnが入ると全くわからない。 codecs.openて普通のopenより処理重いきがするんですが認識あってるかね? 2.7使ってて文字コード指定で100mb前後のtxtなりcsvてり触りたいんだけど通常のopenでは文字指定出来ず、ioモジュールのopen使うと他のライブラリで使ってるopenの挙動がおかしくなる(?)し、codecs遅いしでどうするのがスマートなのかわからん codecs.openを使う そもそもopenに追加処理をしてるのだから、重くて当たり前だろう https://github.com/michaldaniel/Ebook-Viewer こちらのgitで公開されているLinux用epubビューアを改造して使いやすくしようと思っているのですが、 行き詰まってしまいました。 ブラウザの戻るボタンのようにリンク先(引用元など)に飛んだ後、直前に戻るボタンを実装したいのですが (ボタンはgtk3の都合上up arrowボタンを使っています) 改造したのはheader_bar.pyでして、 def __populate_headerbar(self): (途中省略) # Adds up arrow chapter navigation button self.up_arrow_button = Gtk.Button() self.up_arrow_button.add(Gtk.Arrow(Gtk.ArrowType.UP, Gtk.ShadowType.NONE)) self.up_arrow_button.set_sensitive(False); self.up_arrow_button.connect("clicked", self.__on_up_arrow_clicked) navigation_box.add(self.up_arrow_button) (途中省略) def __on_up_arrow_clicked(self, button): """ Handles Up Arrow clicked navigation event, go backward :param button: """ if viewer.Viewer.can_go_back(): viewer.Viewer.go_back() とすると、 WebKit.WebView.can_go_back() takes exactly 1 argument (0 given) というエラーがでてしまいます。 (viewer.Viewerはwebkitを継承したものです) どなたかお知恵をお貸し願えたら幸いです。 >>493 インスタンスメソッドをクラスメソッドみたいにして読んでるから、第一引数として暗黙的に渡されるはずだったselfが足りないって怒られてる。 ソースを斜め読みするとViewerのインスタンスはインスタンス構造上の親であるMainWindowが持っているようなので、 self.__window.viewer.can_go_back()でアクセスできるんじゃないかな >>495 if self.__window.viewer.can_go_back(): self.__window.viewer.go_back() と書いてやってみたらエラーメッセージはでませんでしたが画面が真っ白になってしまいました。 とはいえ、当初のエラーは解消したので大きな進歩です。どうもありがとうございました。 後は勉強がてら自分でやってみます。 >>489 defがここでおしまいですよ 呼び出し元にかえりんしゃー という意味 >>490 from codecs import open as codecsopen とかやって、 codecsまるごとじゃなくcodecs.openだけ読むようにすればちょっとははやくできる ちょっとは。 素人質問で申し訳ないのですが助けていただきたく質問します。 いま「みんなのPython」をやりはじめたのですが Anacondaがうまくできません 最初に普通?のPythonをインストールして そのあとにPythonをアンインストールしたあと Anacondaをインストールしました。 そして「ファイル名を指定して実行」で「python.exe」と入力しても 「'python.exe'が見つかりません」となってしまいます。 Windows PowerShellで「>python」と入力しても 「用語 'python' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません」 となってしまいます。 Anacondaのインストールでは 「Add Anaconda to my PATH environment variable」にはチェックは入れてません 「Register Anaconda as my default Python 3.6」にはチェックを入れました。 >>501 環境変数PATHを設定する | Pythonインストールと環境設定 https://www.javadrive.jp/python/install/index3.html このサイトに書いてあるようにやったらできたんですけど これでいいんですか? カレントフォルダからは「相対パス/python.exe」で実行できる。 カレントフォルダ以外からも実行したいのなら「絶対パス/python.exe」で実行できる カレントフォルダ以外からも「python」というコマンドで実行したいのなら、 「python.exe」のあるフォルダを、ユーザー環境変数PATH に登録しないといけない 例えば、コマンドプロンプトで、以下のように入力すると、 where notepad where python そのコマンドの実行ファイルのある、場所を表示できる はじめまして ラズパイでpythonを利用してます。 Python3 ide?でファイルを実行するとmoduleエラーが起きるんですけど、lxterminalで実行したりcronで実行するとエラーはでないで実行できます。 実行できるので問題ないのですが、なんでpython3 ideで実行するとmoduleエラーになるのかが気になります 詳しい方 お気づきがあれば教えてください 追加ですが温度センサー使ってます。githubからすべて入手したものです。 ググってもなぜかエラー出るよみたいなことが書かれていて原因は不明だったのでお聞きしました。 Python3でのsqlalchemyについて教えてください https://ideone.com/tVSjwB 56行目のsession.commit()でエラーになってしまいます。 sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) CHECK constraint failed: winners [SQL: 'INSERT INTO winners (name, category, year, nationality, sex) VALUES (?, ?, ?, ?, ?)'] [parameters: ('Marie Curie', 'Chemistry', 1911, 'Polish', 'Female')] (Background on this error at: http://sqlalche.me/e/gkpj ) こんな風に書かれてあります。(長いのでここに書くときに改行しました) 何がいけないのでしょうか? >>504 同じPythonを実行してる?(公式の純正PythonとAnacondaとか) >>506 yearはStringじゃなくてIntegerじゃ…? >>508 ほんとだ!あと、リストのMarieの性別も頭が大文字になってました。 凡ミスなのにありがとうございます! >>506 あと、29行目の%の所でpep8のE228の注意が出てしまいます。 %の前後にスペースを入れて、こう書くのが正しいんでしょうか? https://ideone.com/qhYas5 連投すみません SQLAlchemyでのデータベースへのアクセスについてですが、filterとfilter_byってどう使い分けするんでしょうか? 違いが分からないです # スイス人受賞者の取得 # filter_by の場合 result = session.query(Winner).filter_by(nationality='Swiss') # filter の場合 result = session.query(Winner).filter(Winner.nationality == 'Swiss') print(list(result)) gtk3とpythonのpygobjectで質問があります。 https://stackoverflow.com/questions/41696515/webkit2gtk-webview-touchscreen-scrolling こちらの質問にあるとおり、webkit2gtkを使うとlibwebkit1-3.0の時のようなタッチスクリーンによる スクロールができなくなってしまうのですが、何とかタッチによるスクロール(パンというようですが) をしたいのです。こちらの質問者の方はコールバック関数にスクロールイベントを書いたらできたと 書いてありましたが、具体的にはどのように記述すれば良いのでしょうか? https://lazka.github.io/pgi-docs/ こちらのpygobjectのAPIを見てもよくわかりませんでした。どうかよろしくお願いします。 >>513 ですけど、 ふた通りの書き方があるよ、Pythonらしく、より簡単に書く方法はfilter_byの方だよって事ですかね? >>507 同じpythonです。ラズパイにはじめからはいってるやつです。 ほんと謎 パスかなと思ったけど動いてるから違うんやとおもうけど >>516 バージョンも同じなら、理由はわからんなぁ… 別のフォルダに入った同名ファイルをjoblibのParallelで処理するために以下のようなコードを書いたところ1番目のフォルダの結果が常に出てきてしまうんだけど原因分かる? ・環境 Python: 3.7.0 joblib: 0.12.5 Jupyter Notebook上で実行 ・ファイル C:\a\a.txt -> 「1」とだけ半角で書かれたテキストファイル C:\b\a.txt -> 「2」とだけ半角で書かれたテキストファイル ・コード import numpy as np from joblib import Parallel, delayed # 実際はもっと大容量のファイルに対して重い処理を行う def read_file(): return np.loadtxt("a.txt") os.chdir(r"C:\a") result1 = Parallel(n_jobs=-1)(delayed(test)() for _ in range(1)) os.chdir(r"C:\b") result2 = Parallel(n_jobs=-1)(delayed(test)() for _ in range(1)) # 空のフォルダcに移動する os.chdir(r"C:\c") result3 = Parallel(n_jobs=-1)(delayed(test)() for _ in range(1)) print(result1) # 出力 : [array(1.)] print(result2) # 出力 : [array(1.)]・・・[array(2.)]が出力されないのはなぜ? print(result3) # 出力 : [array(1.)] ファイルの数を返すメソッドはありますか? 例えばsrcの下にディレクトリaとbがあって それぞれのディレクトリにa1.txt〜a100.txt、b1.txt〜b100.txtとファイルがあった時に 200と返してくれるメソッドはありますか? defで関数とか作らず1行で済む方法を探しています。 len(os.lisdir(ディレクトリのpath)) いまやってみたらそのコードでは2が帰って来ました aとbの2つのディレクトリがあるから2なのですかね? 欲しいのはそのまた下にあるファイルの数でした Pythonは詳しく無いけど、そう言うは再帰でディレクトリが無い最下層まで潜るコードってよく見るね。 >>521 import glob len(glob.glob(“**/*”, recursive=True)) >>521 sum([len(files) for root, dirs, files in os.walk("src")]) >>504 パス・カレントディレクトリとか、起動時オプションとか。 別の実行ファイルを起動しているとか IDE の前提条件は、プロジェクトごとだろ。 プロジェクトフォルダ・プロジェクト設定ファイルありきだろ。 プロジェクトの条件を満たしていないのかも? プロジェクトとシェルから実行する形式とは、異なるような気がする そのエラーメッセージをここにも書いて、それで検索すれば? >>513-517 「python sqlalchemy filter vs filter_by」で検索! >>521-527 ls -1UR | wc -l 「linux ファイル数 ディレクトリごと」で検索! >>514 「gtk webkitwebview」で検索! 521,523です 教えていただいたのをやってみました。 525さんの方法は、フォルダーの数が含まれていました。結果は202が返りました。 527さんの方法は、ちょうど200が返りました。 529さんの方法は、windowsなので出来ませんでした。 これにて問題は解決しました。皆さまありがとうございます。 https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebView.html >Note that WebKitWebView is scrollable by itself, so you don't need to embed it in a GtkScrolledWindow. って書いてありました。スクロールをGtkで担当していないから、他のgtk3アプリのようにタッチでスクロールできないようです。でも、だったらなんで>>514 のリンク先の人はGTK.gestureでできたんだろう・・・ >なんといっても、800g弱とは思えない軽さと、 薄型コンパクトな筐体はタブレットと同様に、 「出番はないかもしれないけど常時携行しても良い」レベルです。 いざ使おうとすると windows update が始まって再起動…何時間も待たされる…鞄にしまう。 ↓ 放置 ↓ 「出番はないかもしれないけど常時携行しても良い」 ↓ また持ち出す ↓ いざ使おうとすると windows update が始まって再起動…何時間も待たされる…鞄にしまう。 ↓ 放置 リストにn個の要素があります。 このリストの要素から2個をランダムに選んだペアをm組作りたいです。 ただしペアを重複しないようにしたいのですが、 どうすれば実装できるでしょうか。もしくはライブラリがありますか? いくら考えてもペアが重複してしまいます。(特に(a,b)と(b,a)のようなペアが出来てしまいます) n=[1, 2, ... n] m=3 new_n=f(n, m) new_n =[(1,8), (45,n), (n-2, 20)] みたいになるfを探しています。 >>532 ここで回答を待つよりリンク先に直凸したほうがはやいきががが Why could you "scroll" with GTK.gesture? >>535 これは指定した組み合わせ数に達したら中断する方法はありますか? 実際にはnとmが両方4000程なので、nC2を全て取得するのは冗長と思われるので・・ とはいえやりたいことにとても近いのでありがとうございます。 >>536 実際にはm>n/2となるので難しいと思いました。 すみませんこちらの例題が悪かったですね・・ >>534 itertoolsとrandom.sampleを組み合わせる import itertools, random def pair(n, m): combi = list(itertools.combinations(n, m)) return random.sample(combi, m) >>506 これ、モジュールを入れてますが、ideoneで外部モジュールってどうやって使うんです? >>539 いつでもやめれるぞ おれはあほだから count=0からカウントアップしていって 欲しい組数になったらbreak とか思いつくが もっとスマートなやり方あるとおもう >>541 ソースが貼れるだけで 外部モジュールをとってきて動かすまではideoneしてくれない >>538 大抵は日付Gregorianで書いてあるとおもうから 文字列Gregorianの 前の文字列を探したらよさげなんだが 80行目のアドレスにアクセスして見てみた Xpathがもはや538が書いたソースと違っつる (/html/body/pre/span[1577] ってなってて divに1ツも入ってないYO)ので 具体的にどうとは書けない wikipedia みたいに、しょっちゅう構成が変化するものを、 XPath みたいに順番で指定するものは、動かない div[2]/div[1]/div/div[2]/div[2]/div[1] 「div の3つ目の、div の2つ目の...」 CSS セレクターみたいに、id, class などの意味で指定する方が、構成の変化に強い。 まだマシ HTML を解析して、id, class などで限定していくのが基本 今日突然プログラミングに興味を持ちとりあえずpythonをインストールした初心者です。 連番を作成するとき range(10)と打ち込んでも結果がrange(0,10)になってしまいます 解説サイトを見ると9まで表示されるらしいのですが、なぜrange(0,10)になってしまうのでしょうか? バージョンは3.7.1です >>546 解説サイトがpython2向けだから。 別のサイトを見つけましょう Ruby の範囲は、 終端を含む、.. と、含まない ... がある 0..3 → 0〜3 0...3 → 0〜2 python では、終端を含まないのかな? 推測だけど、range(10)と引数が1つの場合は、終端のみが指定されたとみなすのだろう。 その場合、始端は0 が指定されたのと同じ つまり、range(0,10)と同じ >>544 538を書いたのは昨日だけど、今試しても80行目のアドレスのdate of birthのXPathは //*[@id="P569"]/div[1]/div/a 8 October 1927の部分のXPathは //*[@id="q155525$82312275-D23F-4048-A710-6EC6AB12C2C2"]/div[2]/div[1]/div/div[2]/div[2]/div[1] でしたよ >>544 >>545 583のスクリプトだと誕生日、死亡日、出生地、死亡地、性別を77行目の天ぷらで取得するようになってるけれど、もう天ぷらを改変して使うことも無理だから、項目一つ一つそれぞれ取得しないといけないって事ですか? https://www.wikidata.org/wiki/Q155525 この表の左側(date of birthとかplace of birth)のdiv classは wikibase-statementgroupview-property-label 表示の真ん中の8 October 1927や、Bahía Blancaのdiv classは wikibase-snakview-value wikibase-snakview-variation-valuesnak のようでした。 これらを使って >>583 に当てはめる事できますか? 例えば、Ruby で、5ch の書き込み内のa タグを、XPath で指定するのは、こういう感じ # a を含む、post_node だけを抜き出す。descendant は子孫、ancestor は祖先 # div.thread > div.post > div.message > span > a post_nodes = doc.xpath "//div[@class='thread']/div[@class='post']/div[@class='message']/descendant::a/ancestor::div[@class='post']" /div[2]/div[1]/div/div[2]/div[2]/div[1] こういう、1, 2 などの順番では指定しない 順番で指定すると、サーバー側で、HTML ページを作る時に、順番が変わるかもしれない 普通はXPathではなく、以下のような、CSS セレクターで指定する。 div.thread > div.post > div.message > span > a thread クラスが付いた、div 要素の直下の、 post クラスが付いた、div 要素の直下の、 message クラスが付いた、div 要素の直下の、 span 要素の直下の、a 要素 ブラウザのF12 開発者ツールを起動して、自分でHTMLを解析する Chrome で、自分が解析したい要素上で、右クリックメニューで検証を押すと、F12 開発者ツールが起動する 表示されたHTML 上で、右クリックメニューでCopy の所から、 XPath, selector(CSS selector)をコピーできる 例えば、このスレの書き込み内のa タグを、検証してみると、 XPath, CSS selectorは、 //*[@id="550"]/div[2]/span/a[2] 550 > div.message > span > a.reply_link id が550 の要素の直下の、 message クラスが付いた、div 要素の直下の、 span 要素の直下の、 reply_link クラスが付いた、a 要素 ただし、id は550など、先頭文字が数字では始められないから、これは間違い。 5ch の開発者が間違っている。バグ date of birth の、XPath, CSS selectorは、 //*[@id="P569"]/div[1] #P569 > div.wikibase-statementgroupview-property id がP569 の要素の直下の、 wikibase-statementgroupview-property クラスが付いた、div 要素 このCSS セレクターで要素を取得して、それが1つだけかどうか確認しないといけない。 このHTML の製作者は、このクラスを複数のタグに付けているかもしれない このように、他人が作ったHTMLを、解析していくのが難しい。 その仕様は、その製作者が決めたもので、我々が知らないものだから、 隠された情報を暴くのに、時間を食うから、非常に無駄! 仕事以外で、他人の仕様を解析するのは辞めた方がよい。 製作者は答えを知っているけど、我々は答えを知らないから、時間ばかり食う! 今は1階層深くなっているようだ //*[@id="{code}"]/div[2]/div/div/div[2]/div[1]/div/div[2]/div[2]/div[1]{link_html}/text() >>553 なるほど まだ途中までしか読んでないけどおそらく本の内容はこんな感じ 1 ウィキペディアにある現在までのノーベル賞受賞者の全員の一覧からウィキデータにある各人のパーソナル情報とウィキペディアの各人の概略と人物写真をScrapyでスクレイピング 2 そのデータをPandasとMatplotlibでクリーニング、分析 3 そのデータをFlaskを使って配信 4 そのデータをJavascriptのD3.jsで可視化 4の可視化に興味があって読み始めた感じ。けどせっかくなので1から読んでScrapyも学んでみようかと。 でも、他人が作ったサイト(ウィキペディア)で悩むよりもAPIなどで簡単に取得出来るような別のデータを使って2に進んだ方がよいですか? (幸い、本の著作のGithubは数年前にすでにスクレイピングしたデータが置いてありました。数年前なのでもちろん今年の本庶さんは含まれてないですけどね。) >>555 それどうやって見つけたんでしょうか? ちょっと見てみます。 https://i.imgur.com/I9jF1Rl.jpg date of birthのところでコピーしたXPath //*[@id="P569"]/div[1]/div/a https://i.imgur.com/b4m9Pop.jpg その日付けのところでコピーしたXPath //*[@id="q155525$82312275-D23F-4048-A710-6EC6AB12C2C2"]/div[2]/div[1]/div/div[2]/div[2]/div[1] 2枚目の画像の部分を選ぶんだと思っていたんですけど、もしかして選ぶ場所間違えてますか? >>556 その本の例題が難しすぎる。 自分で他人のHTML を解析してまでやる必要はない。無視すべし 自分のやりたい部分だけを、やった方がよい >>558 目的地点はあってるが出発地点が違う もうちょっとソースを読んで、どういう風にXPathをテンプレート化しているかを理解しよう date of birth の、XPath, CSS selectorは、 //*[@id="P569"]/div[1] #P569 > div.wikibase-statementgroupview-property id がP569 の要素の直下の、 wikibase-statementgroupview-property クラスが付いた、div 要素 place of birth の、XPath, CSS selectorは、 //*[@id="P19"]/div[1] #P19 > div.wikibase-statementgroupview-property id がP19 の要素の直下の、 wikibase-statementgroupview-property クラスが付いた、div 要素 ここで、id のP569, P19 みたいなものは、別のHTML から取れるのか? だったら、CSS セレクターで取れる XPath なら、div[1] とか番号指定よりも、class 指定の方がよい。 //*[@id='P569']/div[@class='wikibase-statementgroupview-property'] //*[@id='P19']/div[@class='wikibase-statementgroupview-property'] >>560 出発地点ですか! 例えば「8 October 1927」という文字の上で右クリックして検証を選んで出てくる開発者ツールのElements欄を見てるんですが、もしかしてそこから間違えているとかですか? > もうちょっとソースを読んで、どういう風にXPathをテンプレート化しているかを理解しよう どういう事なのかさっぱり分からないです… >>560 >>561 そういう知識はどこで身につけるんでしょうか? おそらくこれはPythonとは直接関係ない部分なのでPythonの本でもそんなに詳しくは書いてないのかと思います。 これらはWeb開発の知識でしょうか? ほんのちょっとだけどPythonは覚えたから大丈夫だけど、Webは分からないから暗号にしか見えず恐ろしいです。 なるべくWeb開発をしなくてもいいように(ほんとはWebは専門の人に任せようって)、Web開発の部分はなるべく最小限で済むようにして、みなさんがPythonとJavascriptのプログラミングに専念してシングルページアプリを作れるようにってのがこの本らしいけれど、 XPathやChromeのこのツールやdivとかクラスっていうものの知識ってどういうところ(本?サービス?言語?)で学ぶといいんでしょうか?結局はやはりWebの知識が必要になってくるんでしょうか? 途中、SVGでグラフィックを作る章の最初にHTMLとcssの基本的な事が書かれてありましたけれど。 先に、JavaScript, jQuery で、CSS セレクターを学ぶ。 CSS セレクターの方が読みやすい。 入門用サイトでも見て HTML で、CSS デザイン用の属性、id, class などを付けるでしょ? それを手掛かりにして、要素を取得する XPath は後でよい。 入門用サイトを見る https://i.imgur.com/H3vQCNy.jpg >危険なWeb開発地帯 自分もこの認識 恐ろしい >>563 早く先に進みたいけれど、一旦Pythonは横に置いて、そういう学習してみます。 プログラミング言語としてのJavaScriptではなくWebで使うためのJavaScriptという位置付けで学ぶとcssなど理解できるようになるんですかね? あと、JavaScriptのスキルを身に付けたいならフレームワーク(jQueryなど)の存在は完全に無視すべきとありました。 Python少し触っただけの初心者です。 インデント位置が変わるだけでプログラムのロジックの意味が 変わるのを知ってビックリしているのですが、 そんな言語を使ってまともなプログラムを書けるのですか? >>565 初心者ですけど、逆に分かりやすいと思いました。 難しすぎるから、あきらめた方がよい。 他人が作った、HTML を解析しても、時間の無駄で、得るものがない! 本か入門用サイトで勉強した方が、体系的に勉強できて、余程よい それと投稿時には、名前欄に、538 と書いてくれ >>567 まさにこの本がPython学習者がデータの可視化に向けてJavaScriptを学ぶのにちょうどよい本だと思って手に取ったんですが… 最近裾野が広がって初学者が増えたのは良いが FAQはどっかでまとまったの見ておくべき >>565 同じ処理なら誰が書いても同じようなコードになる Python始めたての初学者です。 ファイルを読み込んで、バックアップをとってから、ファイルの一部を書き換えるというプログラムを書きました。 これをPython3.6.1環境のLinuxで実行すると、うまく動きましたが、2.7.5環境の別マシンでは、 TypeError: 'encoding' is an invalid keyword argument for this function というエラーを吐き実行できませんでした。さらに、2.5.2環境の別マシンでは AttributeError: 'str' object has no attribute 'format' というエラーを吐き、実行できませんでした。 Python2と3では互換性がないということは存じ上げていますが、今回、3.6.1、2.7.5、2.5.2のすべての環境で動くものを作りたいです。 おそらくopenのencodingの部分と、datetimeの部分のformatの書き方がだめなんだと思いますが、 全バージョン対応の書き方をしようと思うとどういった形になるのでしょうか。 ちなみに、以下がコード全文です。 https://pastebin.com/F2UKiYtQ >>562 ,564 Pythonは詳しく無いので恐縮ですが、 >プログラミング言語としてのJavaScriptではなくWebで使うためのJavaScriptという位置付けで学ぶとcssなど理解できるようになるんですかね? CSS(スタイルシート)はWebページの見た目を制御するためのものです。 HTMLの要素ごとに、サイズ、背景、フォントの種類、レイアウトなどをCSSで指定する。 HTMLの要素は、タグ、属性、値で構成される。divはタグ、id, classは属性。 よって、CSSを覚えるには、HTML+CSSのセットで覚える必要がある。 今だったら、HTML5+CSS3 さらに、HTMLの要素を操作して表示を変化させるにはJavaScriptを使う。 ホスト側で処理が必要な場合は、CGI(GET,POST)などの知識も必要。 Webページ(HTML)の解析をするのであれば、HTML+CSSの知識は必須と思う。 >>575 なに偉そうに命令しとるんじゃ しばくぞ >>571 >>575 しかるのちpythonのバージョンを検出し そのさき読み込む部分を切り替える処理を書く おk 無駄なあがきだと思うよ import sys if sys.version_info >= (3, 0): def xopen(file, encoding): return open(file, encoding=encoding) else: import codecs def xopen(file, encoding): return codecs.open(file, encoding=encoding) >>578 ありがとうございます いい感じに動いてるっぽいです ちなみになんですが、 def xopen(file, encoding): return open(file, encoding=encoding) xopenという新たに定義した関数のencodingっていうパラメータが、open関数に渡る際に、encoding=encodingとなった右側のみに代入されるのがいまいち何故か分かりません >>537 遅レスで会話の邪魔して悪いんですが。英語で質問するだけの勇気がありません・・・ pyGTKでgtk.gestureはそもそも文献自体がほとんど(2019/1に洋書が出るようですが)ないので、 とりあえず今はwebkit1を使って凌ごうともいます。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる