我正在创建一个非常基本的python程序,该程序允许用户输入命令,然后将其作为代码运行。

例如,我导入了一个名为textScripts.py的文件:在该文件中,有一个名为createFile()的函数。当用户输入textScripts.createFile()时,它将被传递到exec()。它运行无误并退出程序,但未创建文件!

我知道createFile()函数有效,因为如果将textScripts.createFile()放入代码中,它将创建一个文件。

以下是相关的代码段:

commandList=[]
while(commandRun):
    count = 0
    commandList.append(input(">>>"))
    exec(commandList[count])
    print(commandList[count])
    count += 1


here is a screenshot of the code being run:

>>> textScripts.createFile()
>>>


here is a screenshot of the folder:

__pyCache__
textScripts.py
CLIFile.py


该文件夹中应该有一个文件

这是函数createFile()

def createFile(
    destination = os.path.dirname(__file__),
    text = "Sick With the Python\n"
    ):
    ''' createFile(destination, text)

        This script creates a text file at the
        Specified location with a name based on date
    '''
    date = t.localtime(t.time())
    name = "%d_%d_%d.txt" %(date[1], date[2], date[0])

    if not(os.path.isfile(destination + name)):
        f = open(destination + name, "w")
        f.write( text )
        f.close
    else:
        print("file already exists")


如果这是一个明显的问题,我预先表示歉意。我是python的新手,并且一直在寻找有关为什么会发生这种情况的答案。

最佳答案

您将文件保存到错误的文件夹中(可以在函数中插入“打印(目标+名称)”)

您需要替换以下内容:

destination + name


对此:

os.path.join(destination, name)


PS:


您不关闭文件(f.close-> f.close())
打开任何资源的最佳方法是使用“ with”。


例如:

with open('file.txt', 'w') as f:
    f.write('line')

关于python - 为什么exec()命令运行时没有错误但没有产生预期的输出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40455609/

10-12 13:28