実現させたい事
python
1import os 2 3def func(files, exists_files): 4#files には複数の絶対パス 5#exists_files には複数のファイル名 6 7 exists_name = [] 8 for i in exists_files: 9 exists_name.append(os.path.splitext(os.path.basename(i))[0]) 10 11 for name in exists_files: 12 for file in files: 13 if name in file: #絶対パスに文字が含まれるかをチェック 14 files.remove(file) 15 else: 16 continue 17 18 return files
この処理で
それぞれの引数には
別の関数でリスト型で取得した文字列のリストがあり
(func()内でprint()で表示させて引数に文字列のリストがあることは確かです。)
その一つ目の引数にremove()の処理をやっても
remove()が機能しませんでした。
エラーは出ずに、そのまま引数に入ってるfilesの中身が
return として返ってきてしまいます。
試した事
別のpython ファイル上で
python
1li1 = ["hohahoha", "fuuu", "hogehoge", "hotahota", "gagaga"] 2li2 = ["hoge", "fu"] 3 4new_lis = [] 5 6for i in li2: 7 for x in li1: 8 if i in x: 9 li1.remove(x) 10 else: 11 continue 12print(li1)
この単体のコードだとうまくいきました。
となると引数に冒頭のコードの引数に格納されているリストに
何か別の処理をしなければいけないのか?と思い
引数 リスト
引数 リスト処理できない
などでググってみましたが、今現在の私が参考にできそうなサイトが見つけられず
自分なりに
python
1import os 2 3def func(files, exists_files): 4 files_2 = [] 5 files_2.append(files) 6 7 exists_name = [] 8 for i in exists_files: 9 exists_name.append(os.path.splitext(os.path.basename(i))[0]) 10 11 for name in exists_files: 12 for files_2_in in files_2: 13 for file in files_2_in: 14 if name in file: 15 files_2.remove(file) 16 else: 17 continue 18 print(files_2) 19 20 return files
などやってみましたが、思うようにいきませんでした。
どうしたら引数にあるリストの内容を変えたりと
処理をさせることが出来ますでしょうか??
有識者様のお力をお借りできればと思います。
是非宜しくお願い致します。
追記 2021/12/30 19:17
最初のコードでの
引数の中の説明
と
if name in file:
をする説明を追加させて頂きました。
説明不足で申し訳ありませんでした。
回答2件
あなたの回答
tips
プレビュー