2016-09-09 10 views
0

Мне нужно перевести куски кода matlab в Python. Мой код, похоже, «недоступен». Любая идея, почему это происходит? Также: я делаю это правильно? Я настоящий новичок.Перевод кода 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] 
+1

'GetFileList() = [ list, listSize] 'не похоже на правильный код. Может быть, 'return [list, listSize]'? Кроме того, использование функций camelCase с именами нарушает стандарт python code –

+0

@IlyaBoltnev Что такое «стандарт»? – glglgl

+0

@IlyaBoltnev Может ли символы верхнего регистра влиять на мой код? это не сработает, если я его не изменю? – Budzi

ответ

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)) 
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] 
+0

Решение @ ode2k тоже работает (извините, я не могу комментировать ваше сообщение еще из-за моей репутации), но функция getScriptDir isn ' t необходимо. Легче использовать аргумент ключевого слова для установки каталога (плюс, функция теперь повторно используется с другими каталогами). – robben

+0

спасибо вам, мне нужна эта информация и для остальной части кода :))) – Budzi

Смежные вопросы