如何检查是否存在文件,而不使用试用声明?
当前回答
这就是我如何在一个文件夹中找到一个文件列表(在这些图像中)并在一个文件夹中搜索它(与子文件夹):
# This script concatenates JavaScript files into a unified JavaScript file to reduce server round-trips
import os
import string
import math
import ntpath
import sys
#import pyodbc
import gzip
import shutil
import hashlib
# BUF_SIZE is totally arbitrary, change for your app!
BUF_SIZE = 65536 # Let’s read stuff in 64 kilobyte chunks
# Iterate over all JavaScript files in the folder and combine them
filenames = []
shortfilenames = []
imgfilenames = []
imgshortfilenames = []
# Get a unified path so we can stop dancing with user paths.
# Determine where files are on this machine (%TEMP% directory and application installation directory)
if '.exe' in sys.argv[0]: # if getattr(sys, 'frozen', False):
RootPath = os.path.abspath(os.path.join(__file__, "..\\"))
elif __file__:
RootPath = os.path.abspath(os.path.join(__file__, "..\\"))
print ("\n storage of image files RootPath: %s\n" %RootPath)
FolderPath = "D:\\TFS-FARM1\\StoneSoup_STS\\SDLC\\Build\\Code\\StoneSoup_Refactor\\StoneSoupUI\\Images"
print ("\n storage of image files in folder to search: %s\n" %FolderPath)
for root, directories, filenames2 in os.walk(FolderPath):
for filename in filenames2:
fullname = os.path.join(root, filename)
filenames.append(fullname)
shortfilenames.append(filename)
for i, fname in enumerate(shortfilenames):
print("%s - %s" % (i+1, fname))
for root, directories, filenames2 in os.walk(RootPath):
for filename in filenames2:
fullname = os.path.join(root, filename)
imgfilenames.append(fullname)
imgshortfilenames.append(filename)
for i, fname in enumerate(imgshortfilenames):
print("%s - %s" % (i+1, fname))
for i, fname in enumerate(imgshortfilenames):
if fname in shortfilenames:
print("%s - %s exists" % (i+1, fname))
else:
print("%s - %s ABSENT" % (i+1, fname))
其他回答
您可以使用Python的“OS”图书馆:
>>> import os
>>> os.path.exists("C:\\Users\\####\\Desktop\\test.txt")
True
>>> os.path.exists("C:\\Users\\####\\Desktop\\test.tx")
False
不同于 isfile(), exist() 将返回 True for Directory. 因此,根据您是否只需要平板文件或 Directory,您将使用 isfile() 或 exist()。 这里有一些简单的 REPL 输出:
>>> os.path.isfile("/etc/password.txt")
True
>>> os.path.isfile("/etc")
False
>>> os.path.isfile("/does/not/exist")
False
>>> os.path.exists("/etc/password.txt")
True
>>> os.path.exists("/etc")
True
>>> os.path.exists("/does/not/exist")
False
import os.path
def isReadableFile(file_path, file_name):
full_path = file_path + "/" + file_name
try:
if not os.path.exists(file_path):
print "File path is invalid."
return False
elif not os.path.isfile(full_path):
print "File does not exist."
return False
elif not os.access(full_path, os.R_OK):
print "File cannot be read."
return False
else:
print "File can be read."
return True
except IOError as ex:
print "I/O error({0}): {1}".format(ex.errno, ex.strerror)
except Error as ex:
print "Error({0}): {1}".format(ex.errno, ex.strerror)
return False
#------------------------------------------------------
path = "/usr/khaled/documents/puzzles"
fileName = "puzzle_1.txt"
isReadableFile(path, fileName)
你可以尝试一下(更安全):
try:
# http://effbot.org/zone/python-with-statement.htm
# 'with' is safer to open a file
with open('whatever.txt') as fh:
# Do something with 'fh'
except IOError as e:
print("({})".format(e))
奥普特将是:
(没有此类文件或目录:‘whatever.txt’)
然后,取决于结果,你的程序可以只是从那里继续运行,或者你可以编码阻止它,如果你愿意。
使用 os.path.exist 查看文件和目录:
import os.path
os.path.exists(file_path)
使用 os.path.isfile 仅查看文件(注:以下是符号链接):
os.path.isfile(file_path)