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

■ このスレッドは過去ログ倉庫に格納されています
2020/07/18(土) 16:33:27.37ID:/iWSRGfH
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
「Ruby では」「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(超初心者用) その48【まず1嫁】
https://mevius.5ch.net/test/read.cgi/tech/1589201940/

次スレは >>985 あたりが挑戦してくだしあ。(980過ぎても自動落ちはしなくなって久しい)
### END OF TEMPLATE ###
162デフォルトの名無しさん
垢版 |
2020/07/24(金) 21:39:54.33ID:iQPAmZiy
howじゃなくてwhyだな

・「会計ソフト」と称される
・『立場上』、2〜3年後に必要となる
・一万人規模
・カネと引き換えに紙の免状を送る
・外注はしない/出来ない
・既存のAccessなどは使わない

そりゃ10000人から1000円集めたって10000000円だろ
ツールに50万円くらい払ったっていいじゃん

「立場上」「必ず必要になる」「2〜3年後」「それだけが出来る超高性能ソフトウェア」が欲しい、だ
それだけが可能な、単機能でピーキーなアプリだ
立場上必要になるが、自分個人でしか使わない、となる
立場によって使うことになる、役職上業務上の会計ソフトウェア、なんてのは異質だからな
ついでに、iPadで作るってことはiPadで使うことを念頭にしてるのか?
なんにせよ、何に使うかは本人の中ではバッチリ決まってる

・・・ウラのウラのウラがありそう
163デフォルトの名無しさん
垢版 |
2020/07/24(金) 22:21:10.03ID:RoszUeav
そんなウラがあるもんでも無いんですが…
・ソフトが自分しか使わないのは自営業だからで、ソフトを売るつもりは無い
・既存のモノを使うには月々いくらかかかり、それが長年続く
・自分が使う時まではまだ年単位で時間あるから、必要なら作ってしまうか
・iPadやMacBookはあるから使えるよう持っていきたい


動機自体は安易なんですが、自分が思っている以上に大変な事のようですね…
2020/07/24(金) 22:23:05.87ID:fpaVh+C9
macあるならそれで良いじゃん
165デフォルトの名無しさん
垢版 |
2020/07/24(金) 22:30:59.60ID:RoszUeav
それが7年前に買ったMBAで…たまに落ちる時がありいつまで保つかわからないのです
新しく買う際、>>143の目的もあって併用出来たらありがたいなと思い、感触として誰かご存知であればと質問させていた次第です
2020/07/24(金) 22:54:33.93ID:fpaVh+C9
ipadは開発機じゃ無いしMBAの代わりにもならん
ipad活用計画は捨ててmac買い直せ
167デフォルトの名無しさん
垢版 |
2020/07/24(金) 23:52:23.90ID:5pyHYg/M
>>165
馬鹿はいい加減に消えろ
168デフォルトの名無しさん
垢版 |
2020/07/24(金) 23:56:48.80ID:RoszUeav
素直に買い直した方が良さげですね

返信していただいた方々、ありがとうございました
気長に作っていきたいと思います
スレ汚し申し訳ありませんでした
2020/07/25(土) 00:09:50.78ID:KTGk3oHn
pythonで作ったアプリ配布したいけどpyinstallerがダメ過ぎる。
これってhello worldぐらいしか通らないんじゃないか?
2020/07/25(土) 00:17:18.81ID:E//0WwbU
>>163 馬鹿な考えだと気がつけないのは愚か。
そんな状態で何か作るならExcel とかでやっとけ。

ま、自分がお勧めするのは MoneyForward などのクラウドソフトだな。

MoneyForwardなら領収書をiPhoneで撮影すれば全て明細が一覧で出てくるし。
銀行やクレジットカードなどの履歴も全て自動で取り込まれ確定申告がすごく楽。

日常の講座管理も楽。先ずは試してみるべき。
2020/07/25(土) 00:42:02.96ID:RCpRqG+R
>>169
PtinstallerはMacは無理ゲーだけど
Windowsなら普通にアプリ作成いけるよ
自分は社内アプリを作ってた
まぁイレギュラーな方法だけどね
2020/07/25(土) 01:54:25.12ID:vLJBx7i7
>>161
ズレそうな気もしますっていうかズレたか?
ズレてないけど
2020/07/25(土) 03:07:29.18ID:uhXYZAuD
改訂2版 Ruby逆引きハンドブック、2018、株式会社マネーフォワード

この本は、デザインパターンの宝庫で、Ruby の名著!
Rails でも有名な会社
174デフォルトの名無しさん
垢版 |
2020/07/25(土) 03:23:57.70ID:ajAv/KNZ
馬鹿が出てくるとその後荒れるから迷惑
2020/07/25(土) 04:21:21.25ID:dlFhbNx1
ルビィってレイルズしかないの?
2020/07/25(土) 05:03:18.92ID:vSY7kaEI
ルフィはムギワラしかないの?
177デフォルトの名無しさん
垢版 |
2020/07/25(土) 05:17:27.75ID:SKtgUtDy
機械学習系ってどうやって役立てればいいのかわかりません
個人レベルで役立つ事はありませんか
2020/07/25(土) 05:20:10.09ID:MPIh5oPo
>>177
おまいらの大体がエロ収集での活用を目指す傾向
2020/07/25(土) 05:52:12.89ID:/FWTNGkg
>>177
実用的なのは予測系よりも分類系だね
180デフォルトの名無しさん
垢版 |
2020/07/25(土) 05:55:29.03ID:SKtgUtDy
>>178
画像ダウンロード違法になるしね、、、

>>179
画像生成に興味がありましたけど、これは予測系ですよね
分類系とはどういうものでしょうか
2020/07/25(土) 05:57:35.95ID:MPIh5oPo
>>180
適当にエロを集めてきたとして
俺好みかそうでもないか地雷かを学習させ
俺地雷を警告する
とか。
182デフォルトの名無しさん
垢版 |
2020/07/25(土) 06:39:44.57ID:SKtgUtDy
金に結びつけるにはどうしたらいいんだろうね
株とかそれくらいしか思いつかない
2020/07/25(土) 06:40:45.23
>>172
>142と>144の後半だと
root="/dir0"の場合は/dir0/dir1
root="/dir0/dir00"の場合は/dir/dir00
になってしまいますね
>144さんの前半は/dir/dir00/dir1となってバッチリでした
2020/07/25(土) 09:31:24.26ID:A4FKI/RM
金に結びつけるならやっぱ不良検知だろ
個人ではできんけど
185デフォルトの名無しさん
垢版 |
2020/07/25(土) 10:05:21.37ID:SKtgUtDy
不良検知って企業レベルじゃないかしら
エロ画像生成するくらいかね?
2020/07/25(土) 12:02:33.34ID:KTGk3oHn
>>171
Ptinstaller?
pyinstallerの打ち間違いですか?
pyinstallerはなんかmatplotとの相性問題が言われてますよね。
自分のアプリはmatplot使いまくってるので、通らないのかなぁ・・・。
せっかくアプリ書いたんだけど非技術系の人たちは実行ファイルにしないと
対応してくれないので(´・ω・`)
2020/07/25(土) 12:25:34.19ID:/U2+qAwV
os.walkでフォルダ内のファイル探査中にファイル削除ってしていいの?
for root, dirs, files in os.walk(fpath, topdown=False):
_for name in files:
__os.remove(root+"/"+name)

みたいな
188デフォルトの名無しさん
垢版 |
2020/07/25(土) 12:28:50.21ID:S/hmdynO
悪質なウィルスだなw
2020/07/25(土) 12:52:38.08ID:1SYMGxp3
確かに躊躇するな。
いいか悪いかわからんけど、削除予定のパスはリストに突っ込んでおいたら?
2020/07/25(土) 13:07:32.05ID:/U2+qAwV
>>188-189
実際はos.remove(root+"/"+name)の前に条件に一致するファイルだけ削除したいんだけど
やっぱまずはパス名だけリストして
ループ抜けたあとに、最後にそのリストを参照して削除した方がいいのかあ
191デフォルトの名無しさん
垢版 |
2020/07/25(土) 13:32:43.90ID:MWx9t2wm
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw

Pythonさえろくにできないバカチョンのくせに
できるとほざくクソチョンw

日本で強姦と窃盗を繰り返す
犯罪者在日のクソチョンw
2020/07/25(土) 19:25:59.36
配列にマイナスの数値かけたらスルーされてそれは期待する結果だったけど
そういう使い方してもOK?

ary = ["a","b","c"]
len_max = 5
print( ary + ['x']*(len_max-len(ary)) )
len_max = 2
print( ary + ['x']*(len_max-len(ary)) )
2020/07/25(土) 19:52:16.69
print('aiueo'.split(''))
#これでいけると思ったのにエラーでた

print([s for s in 'aiueo'])
#['a','i','u','e','o']
#こうするしかないのだろうか
2020/07/25(土) 20:15:16.89ID:blo6HsLG
**
2020/07/25(土) 20:29:46.07ID:1SYMGxp3
>>193
list('aiueo')
2020/07/25(土) 20:40:52.19
>>195
うおおお出来たあd!
2020/07/25(土) 22:03:14.21ID:vIjhxGJs
>>193
[*'aiueo']
2020/07/26(日) 10:15:29.96
>>197
できたあ!
なるほどargmentsの展開のやつ?かd
2020/07/26(日) 15:54:42.06ID:RfjORUiz
任意のフォルダ(fpath)内のすべてのファイルを検索をして
名前に◯◯が含まれていたらcallback1を実行…@
名前に△△が含まれていたらcallback2を実行…A
ただしcallbackはファイル検索がすべて終了した後

をしたくてゴリ押しでなんとかいけたのですが
”ファイル検索後”の処理部分がモヤモヤします・・
(該当したファイル分だけコールバックが保管されてるところとか)

@Aで引っかかったファイルのパスと、対応するコールバックを一時的にリストに保管
そのリストをループして・・・みたいな感じです
https://ideone.com/UUltFZ

もっと良い感じにできないものでしょうか・・
2020/07/26(日) 15:55:44.85ID:xX+uj3iU
最近パス関連の質問してる人は同じ人かね
2020/07/26(日) 16:03:14.64ID:EPcNRgdm
学校の課題だか仕事だか知らんけど、自分でやる気なくて他人にやらせて成果だけ自分のものにしようって考えの人なんでしょ
2020/07/26(日) 16:06:18.92ID:KqRQHpR8
とりあえずos.walk使うのやめてscandir使うと幸せになれると思う
2020/07/26(日) 16:10:59.18ID:RfjORUiz
ゴリ押しできるコードを自力で完成させるまでは質問はしないと自分ルールで決めているのですが
非のない最適コードをかけるまで、となると
ハードルが高いというかゴールが見えないんですよね・・
そもそもどこが足りないかがわからない、みたいな
仕様書を全部読めばいけそうですが右から入って左から抜けていきそうです(汗

>>202
199を投稿した直後に「あれ、これもしかしてこういうモジュールあるのでは・・?」
と思ったのですがまさか、、scandirさっそく調べてみます
2020/07/26(日) 17:20:20.59ID:T2XYMYOv
os.scandir ?
os.listdir 使うと幸せるなれるかも
fnmatch.filter 使うと幸せるなれるかも
glob.glob 使うと幸せるなれるかも
glob.iglob 使うと幸せるなれるかも
pathlib.glob 使うと幸せるなれるかも
pythonやめると幸せになれるかも

for x in glob.glob(‘./foobar/*.[Mm][Pp]4’):
__callback(x)
2020/07/26(日) 18:15:39.82ID:RfjORUiz
そもそもなんですが、もしかして
ディレクトリ内の検索再帰中にファイルの削除操作ってしても良い感じなのでしょうか?
ファイルを一括操作してるコードをいろいろと見てみましたが普通に
for中に、ヒットしたら即ファイル操作(名前変更したり削除したり)してるようなコードばかりです
(もちろん、検索ヒットしたファイルを変更したあとで(変更前のファイルを)扱うようなコールバックはエラーですが)
例えば
ary = ["a","b","c"]
for n in ary:
_ary.pop(-1)
_print(n)

"c"はprintされないので非同期的にループ処理がされている?と思うのですが
こういったことがファイル検索中のファイル操作でも起こるのかなと思い>199のようなコードになったのです
2020/07/26(日) 18:18:54.16ID:70qYmsrd
したいならすればいいししたくないならしなければいいだろ
自分の好きにしろよ
2020/07/26(日) 18:26:17.92ID:RfjORUiz
>>206
ゴリ押しで動くコードはもう完成してるし動くので作業には支障ないんです>199
(もしかするとコードが書かれたurlが下の方なので見えない人がいるかもしれない?https://ideone.com/UUltFZ

今はその先の段階で、もっと賢く書けないだろうか?
という段階です
2020/07/26(日) 18:52:31.09ID:v4XWgY9j
必要性緊急性のない戯言に付き合う暇な奴はいねえよ
2020/07/26(日) 18:54:38.20ID:RfjORUiz
例えば>199の
>(該当したファイル分だけコールバックが保管されてるところとか)
これの改善策は自レスになりますが
globalsを使えば、dataに入れるのはコールバック名(str型)だけでよくなります
def func():
_print('func()')
globals()['func']()
でも初心者の私は、コールバック名(単なるテキスト)から関数が実行できる、という
そもそもそこを知らなかったので、そういうアイデアが出るまで時間かかりました
(ただその後、そもそもコールバック関数名のテキストだけ入れた場合と、コールバック関数を入れた場合とでそんなに差があるのか?という疑問もわきました)
おそらく上級者の人はこの辺の把握力とか改善スピードがすごいのでしょうね
2020/07/26(日) 19:11:40.36ID:zo3nbSYT
変に質問加工するよりも、課題をそのまま書き込んでくれ
2020/07/26(日) 19:25:32.76ID:RfjORUiz
課題・・?
よくわかりませんがもしかすると>199でそもそも何をしたいのかが
伝わってなかったっぽい・・?
自分で客観的に>199を見て簡単にまとめるとすれば
'''
任意のディレクトリ内で複数のフィルター検索をし
それぞれのフィルターに対応したコールバック関数を
該当ファイルすべてに対して実行する
ただしコールバック実行のタイミングは、検索終了後とする
'''
みたいな感じでしょうか
内容自体はかなり簡単だと思います
初心者の自分ですら必要十分まではこぎつけたので
212デフォルトの名無しさん
垢版 |
2020/07/26(日) 20:39:49.64ID:T8T+tUZ4
アホだ
213デフォルトの名無しさん
垢版 |
2020/07/26(日) 21:24:04.96ID:Q1iiyZri
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw

Pythonさえろくにできないバカチョンのくせに
できるとほざくクソチョンw

日本で強姦と窃盗を繰り返す
犯罪者在日のクソチョンw
2020/07/26(日) 22:24:27.47ID:T2XYMYOv
>>211
単純に条件にマッチするファイル名のリスト(もしくはイテレータ)を生成して
それに対して関数を適用するほうがずっとシンプルだと思うけど
それだと何か不都合があるの?

条件1にマッチするリストを生成 -> 関数1を適用
条件2にマッチするリストを生成 -> 関数2を適用
条件3にマッチするリストを生成 -> 関数3を適用
2020/07/26(日) 22:31:56.65ID:Lwmxod4b
どーも!マッチでーす!
2020/07/27(月) 00:26:48.90ID:DIwwuwRf
>>214
それと似た感じでパターン(>199で言うところのfilters)を1関数につき1種にして
lst1 = filter_search('条件1',関数1) #条件に一致したファイルパスのリストを返す …@
list2 = filter_search('条件2',関数2) # lst1をcallback2で使えたりする余地
みたいなことや
見ため的にclassにして
filter_search('/path').fltr('条件1',callback1).fltr('条件2',callback2) …A
みたいな形にしていました

しかしcallbackの内容次第ではファイルが消えたりするので
条件12それに対応する関数12の依存関係が強いなと気付き
lst12 = filter_search(['条件1','条件2']) #対応するcallbackを与える or lst12を再帰させる
みたいに、あえて依存関係を作った方がいいかな?と
(しかし>199のようにcallback割当が野暮ったくなる・・みたいな結果に)

”非同期的にファイルが消えたりリネームされる?されても大丈夫?”という部分がスッキリすれば
(特に大量のファイル数を扱うわけでもないし)214さんの方法や@、Aの方法を取っていたとおもうし
そうでなくとも、コメントアウトで説明入れとけばいいのでは?とも思います
ただ、上手い感じに依存関係をコードの視覚的にパッケージできないだろうかとも思ったのです
2020/07/27(月) 00:38:37.88ID:sO2/nmC+
pyinstallerって全てのライブラリに対応しているわけじゃないんだね。
まあ、当たり前といえば当たり前だが。。。
うまく実行ファイルできればラッキーというところか。。。
2020/07/27(月) 00:40:44.65ID:DIwwuwRf
ただ214さんのおっしゃる通りイテレータを使えば
条件の依存関係を保ったまま視覚的な表現ができそうです
一度それでやってみようかと思います
2020/07/27(月) 01:52:08.88ID:TQCIWmFu
>>216
>しかしcallbackの内容次第ではファイルが消えたりするので
>条件12それに対応する関数12の依存関係が強いなと気付き
>lst12 = filter_search(['条件1','条件2']) #対応するcallbackを与える or lst12を再帰させる
>みたいに、あえて依存関係を作った方がいいかな?と

なるほど、わからん
ファイル消す処理をしてるなら消えて何が困るのか?
依存関係??

全体的に無理に難しい言葉を使おうとしてる印象を受ける
コードもそれと全く同じで無理に難しくしてる印象を受ける
2020/07/27(月) 02:13:07.40ID:cBvHge2x
>>219
頭の悪い本当の馬鹿は内容を理解せずあちこちからコピペするだけだからこうなる。
ゆとり世代に多い。
2020/07/27(月) 07:31:32.20ID:Yw3HzFpa
>>218
exeにするときに引数ふやして自分で足そう
2020/07/27(月) 08:30:59.36ID:DIwwuwRf
>>219
>何が困るのか?
普通に>216@Aのパターンで何も困らないし自分も基本そうしてます
以前ここかどこかで質問したとき
再帰中に消すのはなぁ、みたいな意見が一定数あったので
自分でもファイル一括処理方法のサイトをいくつか調べてみましたが
特に気にしているようなコードはみかけませんでした
それもあって単に、
#---- A ----
条件1='条件'
条件2='条件1依存の条件'
関数1=条件1のための関数
関数2=条件2のための関数
#---- A' ----
lst1 = f_search(条件1,関数1)
lst2 = f_search(条件2,関数2)
#---- B ----
これ(AB間)を
「条件1ありきで条件2を書き、かつ関数12は条件12のためだけに書いたぞ」
という両方を満たす雰囲気をコード上で表現できるようなうまい書き方はないもんかな
という見た目の話です
2020/07/27(月) 09:56:15.59ID:rtutVcR3
>>222
自分もそういうタイプなので敢えての小言

mp4とmovを振り分けるのに引数にする必要も正規表現使う必要もないですよね。
いやそこは簡略化した例だから、やりたいことを察してピンポイントで助言がほしいというつもりなんだろうけど、それってすごい偉そうな物言いで、助言をもらうのは厳しいと思います、必要ないことやろうとしてるようにしか見えませんから。
といってもそういうセンサーはついてないのだと思うし、そもそもあなたは自分で解決しないと納得できないタイプですから、人には聞かず自分で探し出しましょう。
2020/07/27(月) 10:30:12.06ID:DIwwuwRf
>人には聞かず自分で探し出しましょう
繰り返しになりますが、
”コードは野暮ったくても実用できるまで”
は解決はしてるんです
ただ、もっと書き方を良くできないだろうか
という点が質問した一番の意図です
その先も自分で探し出しましょうとなると
このスレの存在意義は?とちょっと疑問に思います
(もちろん自分でも探しています)

>199,211でも書いてあるように
>ただしコールバック実行のタイミングは、検索終了後とする …@
なんですよね
しかし今のところ
”検索中、同時進行でコールバック実行(ファイル処理)”
してしまえば問題なく書ける、についての返答なんです
しかし質問の前提は@
要するに@をやらない書き方をしましょう、という提案なんですよね
@をやらない方法は自分自身>216で通過済みで、それがあっての@>199なんです
そこでループしてるなと感じますね

>必要ないことやろうとしてるようにしか見えませんから
複数条件検索の全部終了後の全ファイルパス取得を取得し
それぞれの条件に対応した関数を実行する
ファイル検索に限らずこの部分はほんとに不必要なのかな、とは個人的には思います
2020/07/27(月) 10:55:32.33ID:nBoSZwLd
書き方がウザい。
2020/07/27(月) 11:22:10.97ID:FO4znkcB
コールバック実行の方法を現役エンジニアが解説【初心者向け】
2020/07/27(月) 13:41:39.26ID:RLaVSjh7
コールバックにする理由が1mmもないことにワロタ
複数条件考えるなら条件の優先順位考えて上から実行するだけ
最後にやりたいってことは条件の衝突を管理したいようだけど、今の調子だとバグの温床になるぞ
処理の一つ一つは疎結合にして上から順に処理すべき
228デフォルトの名無しさん
垢版 |
2020/07/27(月) 13:44:15.00ID:Hxb31aUu
ゆとり教育の馬鹿に何を教えても無駄だと思う
2020/07/27(月) 14:14:30.78ID:km+HDXw6
>>200
レスしてる人も同じ人
230デフォルトの名無しさん
垢版 |
2020/07/27(月) 14:17:57.57ID:EH5Hzntf
mp4とmovで重複してるからどちらか片方を消したい、とかじゃないの

そもそものやりたいことが一切書かれてないからこれ以上は何も出てこない
howは出てくるけど肝心要のやりたいことが一切出てきてないでしょ
なら出てくるコードに対しては「はいそうですね」としか言いようが無い

一番トップのメインの主題が隠されてるから、こちらが提案しても「それは違うこれも違う」言ってる小出し人間だ
コレ、外側の他人から見るとお気持ちだけで否定してるクズにしか見えない
2020/07/27(月) 14:19:43.25ID:k4QGTEdc
やりたいことも実行できるコードも書かれている件
2020/07/27(月) 14:23:54.22ID:TQCIWmFu
>>222
>条件2='条件1依存の条件'

これ例えばどんなの?
.mp4と.movの例は依存してないよね?
2020/07/27(月) 14:32:03.41ID:DIwwuwRf
>条件2='条件1依存の条件'
例えば条件1でヒットしたファイル名だとか
読み取った内容だったりとかで条件2の解釈も変わるときとか
NOT検索とか
ヒットしたら条件1でヒットしたファイルをやっぱり操作しないとか(これは条件を逆にすればいいだけですが)
まだありそうです
2020/07/27(月) 14:55:14.45ID:TQCIWmFu
>>233
日本語ももうちょっと整理してくれないと読むのがしんどい

> 「条件1でヒットしたファイル名だとか読み取った内容だったりとか」で条件2の解釈も変わるとき

↑これだと「条件1の検索結果に条件2が依存してる」と言ってるのと大差ないからわからないよ
前段の処理次第で解釈が変わる条件と言ってるものが具体的にどういうものを想定しているかを聞いてる
2020/07/27(月) 15:04:59.86ID:TQCIWmFu
>>227
>処理の一つ一つは疎結合にして上から順に処理すべき

これ大事
2020/07/27(月) 15:06:42.77ID:DIwwuwRf
>>234
>条件1の検索結果に条件2が依存してる
はその通りの意味でいいと思います
条件1,2は単なるstr型とも限らないので
で、>227さんの言う>処理の一つ一つは疎結合にして上から順に処理すべき
はもちろんのことで、それはもうできたんです
しかし手続き的に条件1とか条件2とか定義するコードの見た目とのトレードオフだと思い
そこでとりあえず>233などいろいろなフィルタを経て、条件に一致するファイルだけをリスト化して
あとでまとめて処理しよう、という形でやってみようという流れがあります
237デフォルトの名無しさん
垢版 |
2020/07/27(月) 15:37:04.74ID:hnjNWdgG
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw

Pythonさえろくにできないバカチョンのくせに
できるとほざくクソチョンw

日本で強姦と窃盗を繰り返す
犯罪者在日のクソチョンw
2020/07/27(月) 16:13:55.58ID:Yw3HzFpa
>> ID:DIwwuwRf
(・∀・)カエレ!!!
2020/07/27(月) 17:34:24.82ID:AMGxP3t5
>>224
このスレの存在意義は質問ですが、あなたは(私も)人の意見を聞くことのできない人種なので、聞いても無駄です。無駄につきあわされる人は腹を立てます。

もしまだ本心から人の意見が聞きたいと思っていると思うなら、下手な抽象化をせず、ソースコード全部公開することをおすすめします。
2020/07/27(月) 18:03:09.97ID:DIwwuwRf
>>239
>199と>207でめちゃくちゃ公開しているんですが・・
で、>人の意見を聞くことのできない
の全く逆で”人の意見を聞いて”それをヒントに、数レス後に自己解決に近いとこまではきたんです
>209とか>216あたりです(結局、クラス化すればglobalsなんて要りませんでしたが)。
それからは、もう最初の質問の意図と全く違う方向で
逆質問みたいになってなぜかこちらが用途について説明してる感じになってるんですよね
なぜファイルをあとで処理するのかとか、なぜコールバックにするのだとか
そこから派生した以降のやり取りってもう質問でもなんでもなく別の雑談だと思いますよ

質問の本質は単に
ファイル検索がすべて終わった後にリスト化して、まとめて最後に処理をする
であったわけで、こういう汎用シーンって結構あると思うんですよ
で上級者の方ならリスト化のテクニックもそれだけ経験豊富なわけですよね
しかし返ってきたのはそもそもの
リスト化や検索後の処理の必要性について
え?そこから?みたいな突っ込みをされて正直なところ不思議な感覚でした
2020/07/27(月) 18:07:27.24ID:DIwwuwRf
とりあえず自己解決部分を補足しておくと
最初は、
NOT・アンチなどフィルタ検索部

リスト化

通常の条件検索部
_└→条件1リスト化
___└→(条件2以降のための)ファイル処理
_____└→条件2リスト化→ファイル処理(条件3、4,5など続く)→…
…→ 最終処理ファイルリスト化 → 最終ファイル処理
みたいに分けていました(ただ汎用性はまるでないです)

その後>通常の条件検索部以降の条件1,2…部分と
最終ファイル処理部の条件はかぶるし、NOT・アンチフィルタも条件チェーンに入れることができると考え、
まとめることにしました
で、(処理を指示する情報も含めた)そのリスト化は(質問後に)できました
今は↑のような段階的処理をメソッドチェーンにして
条件とコールバックの依存関係だけをみれるような形なので汎用性があります
res = exSearch('/foobar').fltr(条件1,func1).fltr(条件2,func2)
#条件2は条件1の結果を参照することができるが、
#この部分の補足がコードからは読み取りづらい
res.get_func_list()#[ {"func1":['/foobar/hoge/test.txt', '/foobar/fuga/test.txt']},{},{},,, ]
res.do() # self.fnc1やself.fnc2を使ってそれぞれのファイルを処理する
2020/07/27(月) 18:10:20.11ID:TQCIWmFu
>>236
具体例を聞いてるんだけど?
ないの? それとも出せないの?
2020/07/27(月) 18:19:39.51ID:DIwwuwRf
それは”条件”というワードがどこから始まったかをたどれば自ずと答えは出てくると思いますよ
2020/07/27(月) 18:54:48.82ID:TQCIWmFu
日本語のコミュニケーションに難があって
君が何を求めてるのかわからないから抽象度を下げて具体例を聞いてるんだけど
それも説明できないようなのでもう諦めるわ
2020/07/27(月) 19:11:26.58ID:DIwwuwRf
求めている(いた)のは繰り返しになりますが>199や>211ですよ
具体例もソースコードも誰がどう見てもめちゃくちゃハッキリと書いてあります
>1テンプレ推奨のurlも使ってます
2020/07/27(月) 19:46:34.94ID:RLaVSjh7
>>241にある「ファイル検索がすべて終わった後にリスト化して、まとめて最後に処理をする」だけだったはずなのに話が難しく感じるのは何故だろう

俺もやるならメソッドチェーンかなぁ、優先順位が明確だしね
そうするとクラス化するだろうから、コールバックじゃなくて一連のシンプルな処理をメソッドとして実装するかな
.move(条件1).delete(条件2).rename(条件3)
2020/07/27(月) 20:37:43.78ID:TQCIWmFu
>>246
>.move(条件1).delete(条件2).rename(条件3)

条件1を満たしたファイルをmoveして
moveした結果のうち、さらに条件2を満たしたファイルをdeleteして
deleteした結果のうち・・・renameできねぇ・・・

例だからrenameできないのはいいとして
意図としては上に書いたイメージ?
2020/07/27(月) 20:49:03.20ID:RLaVSjh7
>>246
もちろん適当
2020/07/27(月) 20:55:23.93ID:7UNR98vA
PythonのコードをC++に変換するようなツール出てこないかなぁ
Python遅すぎるわ
2020/07/27(月) 21:06:00.74ID:H1Q/Au4r
プロジェクト始めるときにどの言語が適切か検討しろよ…
2020/07/27(月) 21:13:31.93ID:RLaVSjh7
>>249
そんなお前はrustかjuliaに行った方が幸せだぞ
252デフォルトの名無しさん
垢版 |
2020/07/27(月) 21:13:34.28ID:2I3xUck9
サイトハッキングて意外と簡単やな
http://re-file.com/18k/1669/
2020/07/27(月) 21:29:56.95ID:TQCIWmFu
>>248
そっか
まあ>>246の例だとメソッドチェーンにする意味ないもんね
2020/07/27(月) 21:36:32.37ID:DIwwuwRf
>コールバックじゃなくて一連のシンプルな処理をメソッドとして実装する
決まった処理ならそれが一番わかりやすいですね >>246
.move()
#ここで検索が終わり処理する
.delete()
#ここで検索が終わり処理する
.rename()
#ここで検索が終わり処理する
なのか、
.move().delete().rename()#最後にリストを処理する
か(または混合なのか)はオプションで選択できそうですし

・◯◯ファイルを含むディレクトリ内のファイルは処理しない .ignor(条件)
 全メソッド内で、処理をしないディレクトリを総当り?
・.move(条件1)のmoveする予定のファイル情報を読み取り.delete(条件2)の条件2に与えたい
 .move(条件1).over(条件).delete(条件2) #元々チェーンだから意味が分かりにくいかも
・リスト化の段階でmove→delete→renameによるファイルの存在有無の変化を考慮する必要性があるか否か

改めてこの辺りの実装をやっていきたいと思います ありがとうございました
2020/07/27(月) 22:40:22.24ID:P2Gsimd7
そもそも、そんな複雑な、2つ以上の条件があるものを、直接削除してはならない!
絶対に、ロールバックできないから

本当は、別のフォルダに、全く同じフォルダ階層を作って、
そこへ削除するものを移動するのが正しい。
その後、検証してから削除するか、そのまま保存しておく

または、すべての階層を丸ごとコピーして、バックアップを作ってから、試すとか

繰り返し途中で削除するのは、非常に危険!
途中でエラーになったら、そこまで処理した分だけが削除されてしまう

データベースで言う、一貫性がなくなるので、ロールバックできない状態になる。
全てが正常終了するか、または、途中でエラーが出たら、すべてが元通りになるべき

高機能なアプリでは、ロールバックできるように作っている
2020/07/27(月) 23:56:31.64ID:UIY75t8S
珍しくruby厨がまともなことを言っている
削除は戻せないから削除候補ディレクトリに入れるとかして別タイミングで削除ってのは確かによく使う手だな
2020/07/28(火) 00:14:18.96ID:M5Qb6v84
個人用途ならRecycleBinやTrashに入れる処理をdeleteってことにすれば十分
販売するようなデスクトップアプリならUndo含めて考えるけどそういうのはpythonでは作らない

途中でエラーが出たら元通りにすべきかどうかも仕様次第
DBと違ってファイルシステムの場合は100%元通りには出来ないケースが出てくる
2020/07/28(火) 00:58:34.57ID:8RKB8VPn
PyScripterでデバッグした時のローカルファイルのパス指定ってどうなってるの?
例えばhoge.py、hoge.mp3が同じディレクトリにあって
hoge.py内でhoge.mp3を再生する時パス名を'hoge.mp3'にすると
コマンドラインでは正常に再生されるけど
PyScripterのデバッグ実行だとWinError6のエラーになる
2020/07/28(火) 01:41:42.35ID:kkkGcMlI
>>258
getcwdでカレントディレクトリをチェックしたらどうかな。
スクリプトのパスはなんかで取れるから、そこからの相対パスと合成するって手もあるよ
260デフォルトの名無しさん
垢版 |
2020/07/28(火) 08:32:36.71ID:XiTafywX
PyScripterに、スクリプト実行するときにそこにcdするって設定ないのかな?
261デフォルトの名無しさん
垢版 |
2020/07/28(火) 09:09:57.39ID:OeNaj/pH
要約すると、さしあたって必要はないけどスマートなプログラムを書きたいので上級者の人に無料で添削してほしいということです
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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