将Matlab代码翻译成Python

时间:2016-09-09 14:32:19

标签: python matlab function translation

我需要将大块的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]

3 个答案:

答案 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))