这个问题没有相关的答案。当我使用selenium webdriver和python在测试套件中运行我的测试用例时,目录会被.pyc文件删除。如果我单独运行测试用例,只有当我在一个测试套件中运行它们时才会出现它们。如何避免它们?
import unittest
from FacebookLogin import FacebookLogin
from SignUp import SignUp
from SignIn import SignIn
class TestSuite(unittest.TestSuite):
def suite():
suite = unittest.TestSuite()
suite.addTest(FacebookLogin("test_FacebookLogin"))
suite.addTest(SignUp("test_SignUp"))
suite.addTest(SignIn("test_SignIn"))
return suite
if __name__ == "__main__":
unittest.main()
答案 0 :(得分:1)
pyc
模块,就会创建 import
个文件,而不是直接将模块作为脚本运行时创建的文件。这就是您在使用测试代码导入模块时看到它们的原因,但是当您单独运行模块时看不到它们。
如果您从命令行调用Python,则可以使用pyc
参数来禁止创建-B
文件。您还可以使用相同的效果设置环境变量PYTHONDONTWRITEBYTECODE
。我不相信在解释器运行后,有一种方法可以使用Python代码更改该设置。
在Python 3.2及更高版本中,pyc
文件被放入一个单独的__pycache__
文件夹中,这可能在视觉上更好。它还允许多个pyc
文件同时存在于具有不兼容字节码的不同解释器版本("标记"被添加到文件名中,指示哪个解释器使用每个文件)。
但即使在早期版本的Python中,我认为pyc
文件是"垃圾"该目录有点夸张。通常,您可以从源代码控制中豁免创建的文件(例如,通过在.pyc
或等效文件中列出.gitignore
),否则忽略它们。有pyc
个文件可以加快文件的重复导入,因为如果pyc
文件已经有字节码可用,解释器不需要将源重新编译为字节码。
答案 1 :(得分:1)
您可以为解释器提供-B选项来停止生成文件。请参阅:How to avoid pyc files
如果您真的想要,您还可以在运行测试后添加到测试脚本中进行清理。不是我推荐的。
import os
pyc_files = [fn for fn in os.listdir(os.getcwd()) if fn.endswith(".pyc")]
for filename in pyc_files:
os.remove(filename)