iT邦幫忙

0

Python語法跑不出來

  • 分享至 

  • xImage

各位高手
以下是我的作業,不知道哪裡有問題,導致結果跑不出來?謝謝大家
https://ithelp.ithome.com.tw/upload/images/20191112/201220023jbdpsM5Yh.png請問以下是我練習的作業題目,不知道為何跑不出來結果?

##7.作業7, 請以附上之 sample folder 內容為基礎,先以 print 的方式印出資料夾內之檔案,再篩選並留下檔名中不含'k', 'm', 'n' 等關鍵字之檔案。
from os import walk
f = []
for (dirpath, dirnames, filenames) in walk('C:\Users\lan_w\samplefolder'):
f.extend(filenames)
break
print('all file name=')
print(f)

print('after filter--------------')
for fileName in f:
if fileName.find('k')>0 or fileName.find('n')>0 or fileName.find('m')>0:
print(fileName)

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
listennn08
iT邦高手 5 級 ‧ 2019-11-12 17:25:45
最佳解答

in walk(r'C:\Users\lan_w\samplefolder'):
\ 在python是轉譯字 ''前面加r可以讓他輸出完整字串

看更多先前的回應...收起先前的回應...
dragonH iT邦超人 5 級 ‧ 2019-11-12 17:27:11 檢舉

前來支援

參考

/images/emoticon/emoticon32.gif

peggytmu iT邦新手 5 級 ‧ 2019-11-12 17:34:09 檢舉

可是我跑出來的結果,和老師的結果不一樣。
老師題目是不含'k', 'm', 'n' 等關鍵字之檔案。
但我的結果如圖.....
不好意思再請教大家https://ithelp.ithome.com.tw/upload/images/20191112/20122002ayxMJgs6Yt.png

peggytmu iT邦新手 5 級 ‧ 2019-11-12 17:40:45 檢舉

/images/emoticon/emoticon02.gif

C:\Users\lan_w\samplefolder 目錄裡有不含'k', 'm', 'n' 等關鍵字的檔案嗎

peggytmu iT邦新手 5 級 ‧ 2019-11-12 17:45:23 檢舉

怎麼辦有很多耶~https://ithelp.ithome.com.tw/upload/images/20191112/20122002hKoqUC17ib.jpg

ccutmis iT邦高手 2 級 ‧ 2019-11-12 17:58:21 檢舉
from os import walk
# 指定要列出所有檔案的目錄
mypath = "C:\\Users\\lan_w\\samplefolder\\"
all=[]
f=[]
# 遞迴列出所有檔案的絕對路徑
for dirpath, dirnames, filenames in walk(mypath):
  for i in filenames:
    all.append(i)
    if i.find('k')<0 and i.find('m')<0 and i.find('n')<0:
      f.append(i)

print('all file name=')
print(all)
print('after filter--------------')
print(f)
peggytmu iT邦新手 5 級 ‧ 2019-11-12 18:24:40 檢舉

大師:不行耶~
是不是我的資料夾放的位置不對?
C:\Users\lan_w.ipynb_checkpoints\sample folder
這是我放sample folder的位置。我依您的Code結果如下https://ithelp.ithome.com.tw/upload/images/20191112/20122002uF0FADuQh4.png

ccutmis iT邦高手 2 級 ‧ 2019-11-12 18:34:29 檢舉

試試

mypath = 'C:\\Users\\lan_w\\.ipynb_checkpoints\\sample folder'

mypath = r'C:\Users\lan_w\.ipynb_checkpoints\sample folder'

還有我不是大師...是低手/images/emoticon/emoticon77.gif

peggytmu這個跟剛剛的 error 不是一樣嗎/images/emoticon/emoticon04.gif

然後你原本的

for (dirPath, dirNames, fileNames) in walk(r'C:\Users\lan_w\sample folder'):
    f.extend(fileNames)
    break
print('all file name=')
print(f)

這樣應該就可以了
https://ithelp.ithome.com.tw/upload/images/20191112/20117165TRSG7d6qNn.png

dragonH iT邦超人 5 級 ‧ 2019-11-12 19:11:00 檢舉

這個跟剛剛的 error 不是一樣嗎

我也有一樣的疑問XD

peggytmu iT邦新手 5 級 ‧ 2019-11-12 20:22:16 檢舉

真的謝謝各位大師https://ithelp.ithome.com.tw/upload/images/20191112/20122002GQ9jHX0vv7.png的幫忙~我也不知道差在哪裡(好深奧,我看不出來)。最後總算可以跑出來了~

差在你的資料夾名稱少一個空格....

4
froce
iT邦大師 1 級 ‧ 2019-11-12 19:57:15

很想說作業自己做,不過有人回答了我就順便寫一下吧,樓主的程式碼看的蠻想吐血的。

import os
path = r"c:/......"

def not_contain_kmn(name):
    return "k" not in name and "m" not in name and "n" not in name

files = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))]
print(files)

files_not_contain = [f for f in files if not_contain_kmn(f)]
print(files_not_contain)
peggytmu iT邦新手 5 級 ‧ 2019-11-12 20:29:01 檢舉

真的很謝謝大師,本人還是很初階,我仍須研究看看才能理解。謝謝大家的幫忙~我會努力學習的

peggytmu iT邦新手 5 級 ‧ 2019-11-12 20:45:08 檢舉

好簡潔的程式~~~

我要發表回答

立即登入回答