X

くだすれPython(超初心者用) その51【まず1嫁】

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/10/17(土) 10:05:38.14ID:1RQ0Wdhu
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがあるのでそっち池。
「Ruby」「某言語では」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。

★エラーを解決したい場合は、
  表示されてるエラー全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OSとIDEの種類とバージョン)をシッカリ書くこと。

【【【複数の連続半角スペースはなかったことになる・タブがうまく入らない5chの仕様】】】に注意!
Pythonの★ソースコードをそのまま5ちゃんにコピペすると、インデントが崩れてチヌ★ので
  ↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/  Run Code機能あり。最近流行中?
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Python公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi

〇前スレ〇 くだすれPython(超初心者用) その50【まず1嫁】
http://mevius.5ch.net/test/read.cgi/tech/1598527450/

次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい)
### END OF TEMPLATE ###
2020/11/12(木) 00:05:37.45ID:zPJeS2Gd
>>330
#!/usr/bin/env python
# -*- coding: utf-8 -*-
的なやつとか
import configparser
config = configparser.ConfigParser()
config.read('config.ini')
してすぐ変数に代入したいときとか
(あくまでコピペする用途に関して)他のimportと干渉しないように書けるのかなぁと
2020/11/12(木) 00:26:37.68ID:zPJeS2Gd
ちなみに今は>>331みたいなのをエメットで出して
その下にそのプログラムで必要なimportを追記して
あとで整理(importだけ一番上でまとめる)しようかなと思っていますが
他のプログラムと比較したときにimportの差分がパットみ見づらく放置してしまっています
その程度の用途なら好きに書いても良さそうな気がしてきました
他にいい書き方、整理の仕方があるのかもしれません
2020/11/12(木) 00:55:30.25ID:I/DI2P2Q
>>329
>必要のないimportが混じってるといちいち消さなきゃいけない or 必要なものは挿入しないといけないので
前者はコードフォーマット機能で自動で消せるし
後者も自作ライブラリじゃなきゃインポート文を自動的に追加する機能があるから
これの作業をすること自体が少ない

ついでに言うとimport文を先頭にまとめるのはpep8でも決められてるから
その辺のコーディングルールに反する事になる

……というかimport文がまとまってないと必要なライブラリ/モジュールが一目で分からんくなるから
可読性がクソ落ちるぞ
2020/11/12(木) 01:35:01.77ID:HIqoM8fx
>>322
ORマッパで楽したいか、SQL直接書きたいかで変わる
求めるパフォーマンス次第だよ、パフォーマンス必要ならSQL直書きのほうがいいし
2020/11/12(木) 01:38:26.14ID:HIqoM8fx
>>332
importでgrepしてsortして一番上に入れ直せばいいんじゃない?
あとemmetでそれ入れたとしてもちゃんとカーソル動かしてimportの下に入れるんじゃダメなの?
2020/11/12(木) 02:06:15.41ID:aGTNjSDS
>>323
>>324
ありがとう。それも見てみる

>>334
それは書くべきだった。ごめん
非同期バッチで軽めのクエリ投げるだけなので楽な方が良い
2020/11/12(木) 06:17:24.73ID:uK53dAw4
from おじさん import 汚いチンコ ass hole
2020/11/12(木) 10:07:47.02ID:SLO+XJAz
>>334
自分はPythonとMysqlを同時に始めたからSQLのが便利だったな
ORMで検索すると一言目にはSQLを書かなくていい覚えなくていいって出るけど、メリットどころかなんでわざわざSQLをORMで書き直す必要があんのって感じだった
一度どっちかが便利だって思ったらそうそう変えられない。入り口によるのかもしれない
339デフォルトの名無しさん
垢版 |
2020/11/12(木) 11:41:49.27ID:ctukqySm
1秒後に空ファイルを作るコマンドをなげて、本処理はそこで止まらずに進みたいです。

空ファイルはとりあえず
p=pathlib.Path('xxx')
p.touch()
で作ろうと思っていますが、time.sleepを使うと本処理自身もとまってしまうので使えませんでした。
何か方法はありますか?
2020/11/12(木) 11:59:39.24ID:eGo0h3N+
非同期処理やな
341デフォルトの名無しさん
垢版 |
2020/11/12(木) 12:08:42.65ID:8fd8Jcut
いちおう
os.system('sleep 1;touch xxx')
でできますが、一度シェルに投げるのは気持ち悪いので、できればpython内で完結できればと思っています。
342デフォルトの名無しさん
垢版 |
2020/11/12(木) 12:57:01.06ID:f5BAQJxF
thread.run(pathlib.Path('xxx').touch)

touch() じゃなくて touch を渡す
343デフォルトの名無しさん
垢版 |
2020/11/12(木) 12:57:50.22ID:f5BAQJxF
thread.run(lambda : pathlib.Path('xxx').touch)
こっちかも知れん
2020/11/12(木) 13:17:42.67ID:OJpnz+qw
>>339
空ファイルの用途と、一秒後という理由がわからないけど、
本処理の前に作ってしまってはダメなの?
意外とそういう処理で済んじゃう場合もあるし
345デフォルトの名無しさん
垢版 |
2020/11/12(木) 13:33:35.86ID:8fd8Jcut
>>342,343
このthread関数は

from threading import Thread

ではなく、python2系にある全部小文字の

import thread

でしょうか?
346デフォルトの名無しさん
垢版 |
2020/11/12(木) 13:38:24.26ID:8fd8Jcut
>>344
空ファイルはフラグ用で、別に動いてる処理と連携させるものです。
即ファイルが作成されるとその後の工程でまずいので制御したいと考えています。
2020/11/12(木) 22:29:13.40ID:e5F/VTDC
Linux ではロック用途で、安全に一時ファイルを作る関数もある
348デフォルトの名無しさん
垢版 |
2020/11/13(金) 18:22:13.24ID:0B/9Af9p
Tkinterてwinで作ったのをmacで表示させると
レイアウトぐちゃぐちゃだけど

他のGUIライブラリも一緒?
Kivy、PyQt、wxPython、PySide辺りで試したことあるひと
教えてくり
2020/11/13(金) 18:55:20.26ID:NjVQsvkA
>>348
少なくともwxPythonでは乱れる
350デフォルトの名無しさん
垢版 |
2020/11/14(土) 00:06:13.71ID:XJ24TZhC
sizer使えばおk
351デフォルトの名無しさん
垢版 |
2020/11/14(土) 11:11:00.88ID:4Qzmu7NG
絶対配置はどのライブラリもダメてことだよね
OSごとのウインドウやフォントがそもそも違うから

ウイジットを画面いっぱいに埋めるように配置指定すればいけるてことでおk?
でもこれ不格好すぎるんだよね

で空白のためpx単位で指定したらもうアウトてことか…
2020/11/14(土) 11:32:45.42ID:T+rYowJl
pythonでマルチプラットフォームのGUIアプリを作ろうとしてる時点で道具の選択を間違ってるよね
353デフォルトの名無しさん
垢版 |
2020/11/14(土) 11:46:08.53ID:QzputhfI
ピクセル単位で指定しても良いけど面倒臭いだろ
それでもどうしてもというなら適当に余白造って
OS変わっても大丈夫な様に造るしかない
2020/11/14(土) 13:47:10.60ID:zVywz4sj
autolayout機能のあるライブラリがないの?
355デフォルトの名無しさん
垢版 |
2020/11/14(土) 13:51:47.27ID:4Qzmu7NG
相対値て設定できるライブラリてあるのかな?
2020/11/14(土) 13:57:01.44ID:l26MbGN7
>>354
オートレイアウト的なのだけ駆使してても
OSかえたらコレジャナーイ感が出ることは
まれどころじゃなく
よくある

>>352
んだ
2020/11/14(土) 14:13:44.32ID:5DwlosOq
初心者相手にデマ撒き散らすのが流行ってんのか?
これも売電推しのマスゴミのせいだな
2020/11/14(土) 18:59:50.44ID:G79Bc0pr
非同期?アプリを作りたいんだけど、async/awaitが難しすぎて理解できない
俺は無能なんでしょうか
やりたいことは以下
・PCの特定のフォルダを監視し、新規ファイル・更新ファイルがあるたびに
SQLiteのテーブルにファイル名とタイムスタンプを格納・更新する

これを単純なループで作るとPCが固まってしまうので
非同期アプリにする必要があると思った次第
2020/11/14(土) 19:11:37.26ID:DnZAmAgg
asyncioの惨状なんだあれ
リリース毎にDeprecatedだらけの迷走っぷり
折角async/awaitキーワードまで取り入れたのに名前が足りなくて関数名がおかしくなっとるやん
2020/11/14(土) 21:40:51.96ID:xhWL0SJ0
>>358
それは非同期にしなくてもsleep挟めばいいだけじゃないの?
2020/11/14(土) 22:43:31.52ID:HbMOH9xQ
自分はpyqt使ってマルチプラットフォームアプリ作ってます
自分はMacで,周りもMacの人が多いです
議論なされてるようにWinではレイアウトが微妙にズレてますが,大半の人が自分のレイアウトで使えてるから,まあいっかと思ってます
気にできるほど他の言語に明るくないので…
2020/11/14(土) 23:19:14.33
同階層のpyファイルを読み込むにはimport ○○とするらしいのですが
ふと思いました
○○.pyと、すでにインストール済みのモジュール名がかぶったときはどうするのでしょうか
あと、単に同階層の○○.pyをimportすることが明確な場合に、
とりあえず別のインストール済みのモジュールも総当りで?見つけようとするのは無駄な動きな気がしてしまうのですが問題はないのでしょうか
2020/11/15(日) 06:40:07.09ID:XAziMnEB
同階層のやつが優先されるのでお察しの通りエラーを吐く
なのでモジュールと同じ名前は避ける必要がある
2020/11/15(日) 06:55:14.69ID:o8f0udtd
>>360
残念ながらWindowsにはsleepがない…
2020/11/15(日) 10:47:50.77ID:AQ/HY5jp
え?
2020/11/15(日) 11:04:54.86ID:xwGOSzxB
>>358
うちもパイソンはじめて1ヶ月くらいのときに同期やろうとしたけどわけわかんなくて挫折したw
別の方法で解決したけどいつか再挑戦したい
2020/11/15(日) 11:56:58.93ID:4ZGD55Ii
>>364
んなわけあるかっ!
2020/11/15(日) 13:03:57.44ID:Q3DWzppx
plt.subplot(2, 2, 4)
plt.plot(ほにゃらら)
pltshow()
print('end')

みたいにplt.subplot使ってplt.show()するとplt.show()でグラフ表示した後フリーズして
print('end')
が実行されないのですが・・・、どうすればいいでしょう?
グラフ自体は望んだ通りのものが表示されているのですが、グラフウインドウを閉じてもprintが実行されません。
2020/11/15(日) 13:28:33.67ID://uHFZpN
>>364
なぜsleepコマンドだと思ったのか
370デフォルトの名無しさん
垢版 |
2020/11/15(日) 13:50:29.62ID:1NoBqfO6
フリーズはしていない
戻って来て欲しい時は
plt.draw()
371デフォルトの名無しさん
垢版 |
2020/11/15(日) 14:04:02.28ID:1NoBqfO6
ごめん間違った
この手順でやってみ
>>> from matplotlib import pyplot as plt
>>> plt.subplot(2, 2, 4)
>>> plt.plot([[1,2,3],[4,5,6]])
>>> plt.pause(0.1) # ここで表示されて 0.1 秒後に戻る
>>> plt.plot([[1,2,3],[4,5,8]])
>>> plt.gcf().canvas.draw() # 更新
2020/11/15(日) 15:07:46.36ID:tav0pD0x
安易にsleep使う素人が多すぎて困る。
2020/11/15(日) 16:53:25.64ID:lz+gXz1a
sleepの使いどころも知らない自称玄人さんジワるw
2020/11/15(日) 17:14:49.77ID:Q3DWzppx
>>371
できました。ありがとうございます。m(_ _)m
でもなんでできたのか、わからない・・・???

plt.show()
でなんでフリーズして

plt.pause(0.1)
plt.gcf()canvas.draw()
だと戻ってくるんでしょう?
2020/11/15(日) 17:25:25.17ID:U+/Dwi3J
フリーズはしていない
2020/11/15(日) 17:51:06.67ID:tav0pD0x
>>373
sleepなんか使う必要ないから。
2020/11/15(日) 20:09:31.44ID:Q3DWzppx
>>375
むむむ・・・
何が原因なんだろう・・・・・・
2020/11/15(日) 20:29:01.79ID:8j4ATkh0
ここにprintfがないとなぜか動かないんだ
2020/11/16(月) 12:36:25.59ID:A2ai6viK
>>348
pyqt5でも乱れる。俺はだいたいウィンドウをリサイズなしの大きさ固定にしてるけど、
フォントの関係か、だいたい乱れる(大きくは乱れない)。
デザイナーで微調整が必要だな。
380デフォルトの名無しさん
垢版 |
2020/11/16(月) 12:44:51.86ID:sF1WJXNT
https://support.microsoft.com/ja-jp/help/3025083/windows-scaling-issues-for-high-dpi-devices
https://www.eizo.co.jp/support/compati/software/win/windows_hidpi/
2020/11/16(月) 19:38:01.87ID:ZlvPcwtM
Pythonおじさんがマイクロソフトに入ったから、EXCELにPython同梱して操作できるようにしてくれ(´・ω・`)
2020/11/16(月) 19:45:47.18ID:ZYi19Xfa
普通にwatchdogモジュール使えばいいんじゃないの
383デフォルトの名無しさん
垢版 |
2020/11/16(月) 20:01:01.30ID:ysP24k7m
はえーそんなのあるんだ
2020/11/16(月) 21:09:34.49ID:lpvH3HhJ
>>382
watchdog使ったところでビジーループの問題は解決しない
2020/11/17(火) 10:43:44.47ID:KFJ2cj0W
>>384
無能には無理なんだろうな…w
2020/11/18(水) 15:35:14.76ID:cVTuS9Vl
ウェブアプリのレスポンスをjsonで返そうとして
res = '{"status":"{status_code}","error":"{error}"}'
return res.format(status="200",error="")
みたいにすると変数res内の{とformatの{が干渉してエラーが出てしまいます
なので
res = '"status":"{status_code}","error":"{error}"'
return '{'+res.format(status="200",error="")+'}'
としたのですが、、なんかかっこ悪い気がしてもやもやします・・
もっといい方法はないでしょうか
json.dumpsを使うと
res['status'] = 200
res['error'] = ''
の行が増えてしまうのでそのあたりが気になります
2020/11/18(水) 16:02:18.01ID:/USRxP5S
ちょっと何言ってるか分からないんだけど、
return json.dumps({“status":status_code,"error":error})って事ではないの?
2020/11/18(水) 16:19:03.18
>>387
ええ、関数化やモジュール化するまでもなければ簡潔に書ける方法はないかな
ということです
status_codeが200だけ出てくる場合なら別にそれでいいと思いますが
2020/11/18(水) 16:31:36.23ID:/USRxP5S
やっぱり何がしたいのかわからんわw
2020/11/18(水) 16:55:17.63ID:grk01deG
>>386
たぶん希望しているのはこういう事かな
res = '{{"status":"{status}","error":"{error}"}}'
https://docs.python.org/ja/3/library/string.html#formatstrings
2020/11/18(水) 16:59:39.36ID:cVTuS9Vl
>>390
で、できました!
"\{"とかで出来きず他の方法がありそうな気がしていましたが
{{だとは・・
ありがとうございました!
2020/11/18(水) 17:21:35.12ID:vHQTDRO5
res.format(status=500, error='Error: "foobar”’)とかするとバグらない?

素直に関数化するかクラス化したほうが良いと思うな
def res(status_code, error):
__return json.dumps({'status': status_code, 'error': error})

res(500, 'Error: "foobar"')
2020/11/18(水) 22:53:36.69ID:uoMUJNdk
確かにJSONで返すなら、ちゃんとパーサーにお願いしたほうが確実だよね
2020/11/18(水) 23:26:31.23ID:4/YKHsf6
ここに書いてある事がほとんど分からないんですが
本当に超初心者のスレですか?
2020/11/18(水) 23:45:00.61ID:hkPPdx4I
簡単に説明←簡単じゃない
初心者向け←初心者向けじゃない(書いてる奴が初心者)

よくあること
2020/11/18(水) 23:47:39.86ID:cVTuS9Vl
>>392,369
error以外のものを付加したいときとかは普通に関数化してますね
今回は例外処理含めstatsuとerrorがintとstrのみとわかっているので
よりスマートな書き方がないかなと模索してただけです
関数化するとプログラムを分けたときに
同じものを貼るのも、またはimportするのもあれだし、と思って。
その辺を気にしないうまい処理の仕方があるのかもしれませんが
2020/11/19(木) 06:48:28.38ID:SrLjxFgj
>>394
Pythonにはいろんな機能があるから、質問も多岐にわたるわけで
理解できないものがあって当然
JSONなんて使わない人は一生使わない機能だし
2020/11/19(木) 08:41:29.87ID:YoVNSJkp
>>272
Macならhomebrewでpyenvで管理するのが1番楽
anaconda使いたきゃpyenvの中で管理されてるわけだし、pyenvからanacondaの好きなバージョン入れりゃ良いだけ
399デフォルトの名無しさん
垢版 |
2020/11/19(木) 10:53:10.35ID:z88yTjzg
>>386 >>396
status_code=200
error="error"
res = str({"status":status_code,"error":error})
2020/11/19(木) 12:09:45.64ID:oRKf5Y34
>>399
それだとstr()が環境によるのか仕様かはわかりませんが
”が'で表示されてしまいますね
実際そのコードをサーバー立てた試験はしてませんが
以前、JSONをバックエンド側でシングルクオートで書くと
クライアント側でエラーが起きた記憶があります

あと、毎回status_codeとerrorを変数に置く必要もない気がします
もしstr()のシングルクエート化が問題なく
statusもerrorも固定であればもうこれでいいのでは
return str({"status":200,"error":"err"})

自分は簡単な場合はこんな感じです
res = '{{"status":{},"{}":"{}"}}'
#分岐
return res.format(200,"msg","ok")
2020/11/19(木) 15:47:35.30ID:EbSX4tjh
>>400
>res = '{{"status":{},"{}":"{}"}}'

jsonシリアライザーを使わず文字列+format関数を使うメリットなくない?

それに>>396で言ってるプログラムを分けた時に
テンプレートになる文字列をコピペして回るくらいなら
関数化/モジュール化してimportしたほうが健全だよ
2020/11/19(木) 16:15:53.36ID:oRKf5Y34
>>401
>文字列をコピペして回るくらいなら
そんなこといい出したらimport行もプログラム毎にコピペしてません・・?
関数もコピペしてますよね
親で読み込むならまだしもモジュール名に困りますし。
gitで管理するほどのものでもないし

そういう簡単な用途でない場合は
普通に関数化するしjson.dumpsも使っていますし
gitで管理するレベルのモジュール化も実際してしますけどね
2020/11/19(木) 16:54:21.20ID:4Pgi61oy
質問です
「実用的でないPythonプログラミング」という本をやっているのですが
Pylintのところで
コマンドプロンプトに
> pylint -rn --max-line-length=79 --generate-rcfile > myconfig.pylintrc
という風に設定ファイルを作った後に
> pylint --rcfile myconfig.pylintrc pseudonyms_main(評価したいプログラム名です)
とすると
Traceback (most recent call last):
File "c:\users\owner\appdata\local\programs\python\python39\lib\runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:\users\owner\appdata\local\programs\python\python39\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\Users\owner\AppData\Local\Programs\Python\Python39\Scripts\pylint.exe\__main__.py", line 7, in <module>
File "c:\users\owner\appdata\local\programs\python\python39\lib\site-packages\pylint\__init__.py", line 22, in run_pylint
PylintRun(sys.argv[1:])
File "c:\users\owner\appdata\local\programs\python\python39\lib\site-packages\pylint\lint\run.py", line 298, in __init__
linter.read_config_file(verbose=self.verbose)
File "c:\users\owner\appdata\local\programs\python\python39\lib\site-packages\pylint\config\option_manager_mixin.py", line 290, in read_config_file
parser.read_file(fp)
File "c:\users\owner\appdata\local\programs\python\python39\lib\configparser.py", line 718, in read_file
self._read(f, source)
File "c:\users\owner\appdata\local\programs\python\python39\lib\configparser.py", line 1017, in _read
for lineno, line in enumerate(fp, start=1):
つづきます
2020/11/19(木) 16:54:40.27ID:4Pgi61oy
File "c:\users\owner\appdata\local\programs\python\python39\lib\codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
File "c:\users\owner\appdata\local\programs\python\python39\lib\encodings\utf_8_sig.py", line 69, in _buffer_decode
return codecs.utf_8_decode(input, errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

となって評価してくれません
2020/11/19(木) 17:09:06.67ID:4Pgi61oy
OSはindows10でPythonのバージョンは3.9です
2020/11/19(木) 17:11:36.55ID:4Pgi61oy
>>405
> OSはindows10でPythonのバージョンは3.9です
indows→Windows
2020/11/19(木) 17:23:13.66ID:YSWc8XxM
>>403-406
3.9なんて使うからじゃろ
3.8にしとけよ
あと
ターゲットの本文?に全角文字入ってないか?入ってたらそれをヤメレ
408デフォルトの名無しさん
垢版 |
2020/11/19(木) 17:28:17.91ID:ikoVfZxF
教えて下さい。

tkinterのテキストに処理の状況を表示していきたいのですが、処理終了後に
一気に再描画される感じになってしまいます。
printしてshellに出力されるような感じで、テキストに出力するにはどうしたら
よいでしょうか。

サンプルです。
------
import tkinter
import tkinter.scrolledtext as tkst

def click():
for i in range(10000000):
# 10000回ループに1回テキスト出力
if (i / 10000 ) % 1 == 0:
editArea.insert('end',str(i)+'回目\n') # 一気に描画される
print(str(i)+'回目') # このようにしたい

# メインウィンドウ作成
root = tkinter.Tk()
root.geometry("600x400")

Button1 = tkinter.Button(root,text='実行',command=click)
Button1.pack()
editArea = tkst.ScrolledText(root,wrap= tkinter.WORD, width=20,height = 10)
editArea.pack(expand=True,fill=tkinter.BOTH,padx=5, pady=5)

# メインループ
root.mainloop()
------
どうかよろしくおねがいします。
2020/11/19(木) 17:32:51.21ID:YSWc8XxM
>>408
flush()について調べてみるとハッピーになれるかもしれない
2020/11/19(木) 17:40:55.60ID:4Pgi61oy
>>407
評価したいプログラムは
https://github.com/rlvaugh/Impractical_Python_Projects/blob/master/Chapter_1/pseudonyms_main.py
です、たぶん全角は入ってないと思います
いま3.9から3.8.6に変えてみて同じことをやってみても
Traceback (most recent call last):
File "c:\users\owner\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:\users\owner\appdata\local\programs\python\python38\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\Users\owner\AppData\Local\Programs\Python\Python38\Scripts\pylint.exe\__main__.py", line 7, in <module>
File "c:\users\owner\appdata\local\programs\python\python38\lib\site-packages\pylint\__init__.py", line 22, in run_pylint
PylintRun(sys.argv[1:])
File "c:\users\owner\appdata\local\programs\python\python38\lib\site-packages\pylint\lint\run.py", line 298, in __init__
linter.read_config_file(verbose=self.verbose)
File "c:\users\owner\appdata\local\programs\python\python38\lib\site-packages\pylint\config\option_manager_mixin.py", line 290, in read_config_file
parser.read_file(fp)
File "c:\users\owner\appdata\local\programs\python\python38\lib\configparser.py", line 718, in read_file
self._read(f, source)
File "c:\users\owner\appdata\local\programs\python\python38\lib\configparser.py", line 1017, in _read
for lineno, line in enumerate(fp, start=1):
つづきます
2020/11/19(木) 17:41:42.54ID:4Pgi61oy
File "c:\users\owner\appdata\local\programs\python\python38\lib\codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
File "c:\users\owner\appdata\local\programs\python\python38\lib\encodings\utf_8_sig.py", line 69, in _buffer_decode
return codecs.utf_8_decode(input, errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
というふうになって同じみたいです
2020/11/19(木) 17:50:31.40ID:OpsIjeL3
>>403
文字コード変えてないか?
VSCODEとかのテキストエディタで該当ファイルを開いた時に
ちゃんとUTF-8になってるか?
413デフォルトの名無しさん
垢版 |
2020/11/19(木) 17:51:00.78ID:KWn/SEv2
>>410
その評価したいプログラムがUTF-16で保存されてるみたいだから
VS CodeかなにかでUTF-8で保存しなおせば大丈夫かも
2020/11/19(木) 17:57:08.10ID:4Pgi61oy
>>412
>>413
Visual Studio Codeで開くと右下(ですよね?)には
UTF-8って表示されています
2020/11/19(木) 18:03:30.56ID:EbSX4tjh
>>402
値をあちこちにコピペして使うことと
値を参照してる変数や関数をあちこちで使うことの違い

複数のファイルで同じようなimportを何度も繰り返しやってるなら
__init__.pyとかでまとめればいい

gitは何の関係が?
2020/11/19(木) 18:11:08.22ID:UFBeFMfP
>>git
自分はそこそこできるんだぜアピールじゃないかなw
よくいるよね。こういうタイプの人。
2020/11/19(木) 18:23:43.14ID:NbNudS2h
>>416
いるよね
質問者のくせにアドバイスに挑発的な返しをする人
2020/11/19(木) 18:26:14.64ID:YSWc8XxM
>>414
じゃあBOMがついてるとか?
2020/11/19(木) 18:31:09.44ID:oRKf5Y34
>>415
>複数のファイルで同じようなimportを何度も繰り返しやってるなら
ええ、そういう用途のときはそうすればいいと思いますよ

>gitは何の関係が?
ホストPC以外で開発する場合、通常はクラウドでコンテナ作って云々すると思いますが
いちいち簡易レスポンスのためのimportをコピペするのが面倒なので
gitでリモートします
2020/11/19(木) 18:33:57.52ID:oRKf5Y34
というかホストPCで開発するときも
プロジェクト毎にcloneすると思うけど
毎回ファイルごとコピペしてる人が多いのかな
2020/11/19(木) 18:43:27.44ID:4Pgi61oy
>>418
BOMっていうのは知らなかったですけど
https://qiita.com/JINr/items/255429d6174fad76b9b7
ここに書いてあることをやってみたのですが
BOM付きっていうところをにはチェックは入ってなかったです
あらためてチェックなし状態で上書き保存して同じことしても
同じようなエラーが出ました
422デフォルトの名無しさん
垢版 |
2020/11/19(木) 18:53:18.11ID:ikoVfZxF
>> 409
コメントありがとうございます。
flush() 色々と調べてみましたが、まだ有効に使えていませんが、
調べているうちに、update()とsee()というメソッドがあるのが
わかり、組合せたら上手くいきました。
ヒントいただきありがとうございました。

一応、結果報告
import tkinter
import tkinter.scrolledtext as tkst
import sys

def click():
for i in range(10000000):
# 10000回ループに1回テキスト出力
if (i / 10000 ) % 1 == 0:
editArea.insert('end',str(i)+'回目\n') # OK
editArea.update()
editArea.see('end')
#sys.stdout.flush()
print(str(i)+'回目') # このようにしたい

# メインウィンドウ作成
root = tkinter.Tk()
root.geometry("600x400")

Button1 = tkinter.Button(root,text='実行',command=click)
Button1.pack()
editArea = tkst.ScrolledText(root,wrap= tkinter.WORD, width=20,height = 10)
editArea.pack(expand=True,fill=tkinter.BOTH,padx=5, pady=5)
root.mainloop()
2020/11/19(木) 19:00:41.46ID:j3QxrLZF
>>421
myconfig.pylintrcの方がBOM付きUTF-16LEになってる予感
もしかしてpowershellでやった?
2020/11/19(木) 19:03:04.41ID:YSWc8XxM
>>422解決おめ+報告乙

>sys.stdout.flush()
おう、これ↑は標準出力(Win系ならDOS窓)への出力をいますぐやれよ という命令だから・・・
sysのimportもコメントアウトしちゃって大丈夫にみえる
2020/11/19(木) 19:04:21.67ID:YSWc8XxM
>>421
今知れてよかったな>BOMの存在
(これからもまれに苦しんでいくことだろう)

>>423横じゃが
なるほどなっとくありうる展開
2020/11/19(木) 19:11:37.20ID:4Pgi61oy
>>423
!!!その通りでした!!!
myconfig.pylintrcがBOMつきUTF-16になっていました・・・
本にフォルダでShiftを押しながら右クリックで
「コマンドウィンドウをここで開く」か「PowerShellウィンドウをここで開く」を選べと書いてあったので
PowerShellで開いてやってました
すいません正確な情報じゃなくて・・・
myconfig.pylintrcをUTF-8にしたらうまくできました!!!
ありがとうございます!
2020/11/19(木) 22:17:37.25ID:Na4zD9bI
>>419
クラウドでコンテナ云々とか別に普通じゃないと思うけど
場合によるでしょ
というか今どきはVSCodeのリモート開発がマジでローカルで開発してるみたいで便利でいいよ
あと、jsonモジュールはPython標準なのだから、よっぽど性能を出したいとかじゃなければ標準ライブラリ使った方がトラブらないと思う。自分のいい加減なコードより10万倍ぐらいテストされてるだろうから。
そもそも性能出したいときにPython使わないし、jsonモジュールを使わない方がいいケースがあまり思いつかないなあ。
2020/11/19(木) 22:31:26.53ID:oRKf5Y34
>>427
いや普通に主にVSCodeでのリモート開発ですよ
>ローカルで開発してるみたいで
そのためのコンテナなんですけどね・・
場合によってVSCodeなり別だったりでgit管理、運用がコンテナってだけで。
普通は仮想環境下ならこれらはセットだと思いますよ・・
あと繰り返しになりますが
>intとstrのみとわかっている
みたいな単純な用途の場合ですよ
2020/11/19(木) 23:28:35.13ID:Na4zD9bI
>>428
なるほど、ちゃんと読んでなかったけど
importを書きたくないからの主張なのか
なら、json.dumpsの1行上にimport jsonを書いて2行コピーするのはどうかな?
何回importがあっても問題ないし、文が書けるところならどこにでも書けるし、
式で完結させたければ
__import__('json').dumps(obj)
とすればいいみたい。(これにはちょっと驚いた)

自分はめちゃくちゃ簡単なはずのjsonでも固定のjsonを条件によって2個出し分ければいいとかじゃなければ、
たかだかjsonを出すのに、strに変な文字が入らないか考えたりintをstrに変換する方法を考えたりして、余計な判断が入るのが嫌だから、jsonモジュール任せだな。
まあ、楽な方法は人それぞれだと思うんでjsonモジュールを使わないのが楽と思う人もいるのは否定しないけど。
2020/11/19(木) 23:38:08.43ID:zsB/MCGD
考え方は人それぞれなんでしょうけど、「スマートな書き方」という質問に対して、JSON形式で返すのならjson.dumps使ったほうが他人がコードを読んでも「あ、これはJSONで返すんだな」と意味が理解しやすいしスマートだと思うなぁ
自己満足的なスマートか、保守性も考えたスマートなのか、方向性の違いかしら。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況