我需要将大块的matlab代码翻译成Python。我的代码似乎“无法访问”。知道为什么会这样吗? 另外:我做得对吗?我是一个真正的新手。
Matlab代码:
function Dir = getScriptDir()
fullPath = mfilename('fullpath');
[Dir, ~,~] = fileparts(fullPath);
end
function [list,listSize] = getFileList(Dir)
DirResult = dir( Dir );
list = DirResult(~[DirResult.isdir]); % select files
listSize = size(list);
end
我的Python代码:
def Dir = getScriptDir():
return os.path.dirname(os.path.realpath(__file__)
def getFileList(Dir):
list = os.listdir(Dir)
listSize = len(list)
getFileList() = [list, listSize]
答案 0 :(得分:2)
您的语法不正确。如果我正确地读了这个,你试图将文件的名称与脚本放在同一目录中,并打印该列表中的文件数。
以下是一个如何执行此操作的示例(基于您提供的程序):
import os
def getFileList(directory = os.path.dirname(os.path.realpath(__file__))):
list = os.listdir(directory)
listSize = len(list)
return [list, listSize]
print(getFileList())
输出示例:
[['program.py', 'data', 'syntax.py'], 3]
答案 1 :(得分:0)
请记住,您需要从python函数返回变量才能获得结果。
有关如何在python中定义自己的函数的更多信息:https://docs.python.org/3/tutorial/controlflow.html#defining-functions
答案 2 :(得分:0)
您的功能定义不正确。我修改了你提供的代码。您还可以将getScriptDir()
功能合并到getFileList()
功能中。
import os
def getFileList():
dir = os.path.dirname(os.path.realpath(__file__))
list = os.listdir(dir)
listSize = len(list)
fileList = [list, listSize]
return fileList
print(getFileList())
返回:(在我的环境中)
[['test.py', 'test.txt', 'test2.py', 'test2.txt', 'test3.py', 'test4.py', 'testlog.txt', '__pycache__'], 8]
您的脚本函数 - 包括getScriptDir(已修改):
import os
def getScriptDir():
return os.path.dirname(os.path.realpath(__file__))
def getFileList(dir):
dir = os.path.dirname(os.path.realpath(__file__))
list = os.listdir(dir)
listSize = len(list)
fileList = [list, listSize]
return fileList
dir = getScriptDir()
print(getFileList(dir))