仅在linux中没有此类文件或目录python(来自windows)
在Windows和Linux(Debian)中,我在一个文件夹中有相同的精确目录结构,其中脚本位于static+dataoutput文件夹中 为什么下面的代码在Windows中运行良好,但在linux中没有出现这样的文件或目录路径错误仅在linux中没有此类文件或目录python(来自windows),python,Python,在Windows和Linux(Debian)中,我在一个文件夹中有相同的精确目录结构,其中脚本位于static+dataoutput文件夹中 为什么下面的代码在Windows中运行良好,但在linux中没有出现这样的文件或目录路径错误 @app.route('/_getdataoutputfilelisting') def getdataoutputfilelisting(): listoffilesindataouput = getfiles('static/dataoutput')
@app.route('/_getdataoutputfilelisting')
def getdataoutputfilelisting():
listoffilesindataouput = getfiles('static/dataoutput')
return jsonify(listoffiles = listoffilesindataouput)
def getfiles(dirpath):
a = [s for s in os.listdir(dirpath)
if os.path.isfile(os.path.join(dirpath, s))]
a.sort(key=lambda s: os.path.getmtime(os.path.join(dirpath, s)))
a.reverse()
return a
有没有一种方法可以使它具有通用性,从而在两种OSs中都能工作
谢谢这可能与DOS和Unix对待换行符和返回的方式不同有关。尝试使用
dos2unix
工具转换文件
SYNOPSIS
dos2unix [options] [FILE ...] [-n INFILE OUTFILE ...]
unix2dos [options] [FILE ...] [-n INFILE OUTFILE ...]
我会尝试更改传递到getfiles的字符串 请尝试以下方法:
os.path.join(os.getcwd(),'static','dataoutput')
我无法验证它是否能在Windows下工作,但它能在Linux下工作;而
'static/dataoutput'
不会。Windows和Linux有不同的路径分隔符。对于Windows,部分路径用反斜杠(\)分隔,而在Linux上是正斜杠(/)。您可以按照@mcneo的建议使用os.path.join('static','dataoutput')
(即使没有getcwd()
),或者使用os.path.sep
自己创建路径
getfiles(os.path.join('static', 'dataoutput'))
# or...
getfiles('static' + os.path.sep + 'dataoutput')
从技术上讲,您也可以检查平台并输入正确的斜杠,但不建议这样做。我在这里添加它是为了更好地演示这个问题,但是您应该使用os.path
if sys.platform == 'win32':
getfiles('static\\dataoutput')
else:
getfiles('static/dataoutput')
没有这样的文件或目录:“static/dataoutput”我曾经遇到过同样的问题,请尝试使用
/
而不是/
。这是一个相对路径。进程的当前目录是什么?