我需要通过创建文件名列表来处理目录中的文件名。 但我的结果列表也包含符号链接的条目。如何使用python在特定目录中获取纯文件名。
我尝试过:os.walk,os.listdir,os.path.isfile
但是所有都包含'filename~'
类型的符号链接到列表中:(
glob.glob
添加了我不需要的列表路径。
我需要在这样的代码中使用它:
files=os.listdir(folder)
for f in files:
dosomething(like find similar file f in other folder)
有任何帮助吗?或者请将我重定向到正确的答案。感谢
编辑:波形标志位于结尾
答案 0 :(得分:1)
获取目录中的常规文件:
import os
from stat import S_ISREG
for filename in os.listdir(folder):
path = os.path.join(folder, filename)
try:
st = os.lstat(path) # get info about the file (don't follow symlinks)
except EnvironmentError:
continue # file vanished or permission error
else:
if S_ISREG(st.st_mode): # is regular file?
do_something(filename)
如果您仍然看到'filename~'
文件名,那么这意味着它们实际上不是符号链接。只需使用他们的名字过滤它们:
filenames = [f for f in os.listdir(folder) if not f.endswith('~')]
或使用fnmatch
:
import fnmatch
filenames = fnmatch.filter(os.listdir(folder), '*[!~]')
答案 1 :(得分:0)
您可以使用os.path.islink(yourfile)
检查您的文件是否符号链接,并将其排除。
这样的事情对我有用:
folder = 'absolute_path_of_yourfolder' # without ending /
res = []
for f in os.listdir(folder):
absolute_f = os.path.join(folder, f)
if not os.path.islink(absolute_f) and not os.path.isdir(absolute_f):
res.append(f)
res # will get you the files not symlinked nor directory
...