为什么exec()命令运行时没有错误但没有产生预期的输出?

时间:2016-11-06 23:09:47

标签: python exec

我正在创建一个非常基本的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的新手,并且一直在寻找答案,为什么会发生这种情况。

1 个答案:

答案 0 :(得分:1)

您将文件保存到错误的文件夹(您可以在功能中插入"打印(目的地+名称)"

你需要替换它:

destination + name

到此:

os.path.join(destination, name)

PS:

  1. 您不会关闭该文件(f.close - > f.close())
  2. 打开任何资源的最佳方法是使用"使用"。
  3. 例如:

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