从 OS.Walk in python

问题描述

我的目标 - 使用 OS walk 时仅列出 5 个条目。到目前为止,我只能获得我使用 OS.Walk 找到的所有内容的列表或仅列出一个条目。 (通过使用返回函数

我的代码 导入操作系统 导入子流程

def playmusic(name):
    for root,dirs,files in os.walk('E:\\',followlinks=True):
        for file in files:
            if name in file:
                vlc='C:/Program Files/VideoLAN/VLC/vlc.exe'
                music=str(os.path.join(root,file))
                print(music)
                #subprocess.Popen([vlc,music])
                #return
    print("Finish")
    input()
try:
    s=raw_input("name: ")
    playmusic(s)
except Exception as e:
    print(e)
    print("Error")

结果:

=== RESTART: C:\Users\VGMPC2\Documents\testing scripts\search and print.py ===
name: test
E:\nes\Jordan Vs Bird\3 Point Contest.mp4
E:\nes\Jordan Vs Bird\Slam Dunk Contest.mp4
E:\playlist\Action&Adventuretest.xspf
E:\playlist\schedule test 2.xspf
E:\Snes\Lufia II\The Greatest Thieves.mp4
E:\Symbolic playlists\Nintendo Generation\3 Point Contest.mp4
E:\Symbolic playlists\Nintendo Generation\Slam Dunk Contest.mp4
Finish

My code

如果有什么办法只显示 5 个而不是整个列表,那就太好了!我尝试使用 len() 但我无法弄清楚如何在 os walk 搜索中使用它。 我想说最重要的是 music=str(os.path.join(root,file)),因为我相信搜索也是如此。

任何想法将不胜感激。感谢您的宝贵时间,

解决方法

试试这个:

def playmusic(name):
    for root,dirs,files in os.walk('E:\\',followlinks=True):
        for file in files[0:5]: #You show the first five only
            if name in file:
                vlc='C:/Program Files/VideoLAN/VLC/vlc.exe'
                music=str(os.path.join(root,file))
                print(music)
                #subprocess.Popen([vlc,music])
                #return
    print("Finish")
    input()
try:
    s=raw_input("name: ")
    playmusic(s)
except Exception as e:
    print(e)
    print("Error")