我的脚本根据它提取的信息生成多个包含随机名称的文件。我创建了这个测试来尝试将运行时创建的所有新文件移动到以正在运行的文件命名的新目录中。
当我使用os.popen("mv " + moveFiles +' ' + filename + "_dir")它时,它工作得很好,但是 os.popen 由于 shellshock 被认为是不安全的
切换到 时cmd = Popen(["mv", str(moveFiles), filename + "_dir"]),出现以下错误
mv: cannot stat '/home/test/testing/TestFile1.txt /home/test/testing/TestFile2.txt': 没有这样的文件或目录
我相信这是由于它在 moveFiles 变量的开头和结尾添加了撇号,该变量试图将其作为 1 个文件而不是 2 个文件移动。因此,它在创建单个文件时有效,但不再会导致错误。有没有办法删除这个?
'/home/test/testing/TestFile1.txt /home/test/testing/TestFile2.txt'
def createDir(filename):
"""
createDir creates the folder of the file/argument given (Example.txt_dir)
"""
Dir = str(filename) + "_dir"
cmd = Popen(["mkdir", Dir], stdout=PIPE, stderr=PIPE)
def createFiles(filename):
"""
createFiles creates test files to move into Example.txt_dir
"""
with open('TestFile1.txt', 'w') as m:
cmd = Popen(["file", filename], stdout=m, stderr=PIPE)
print('Saved as TestFile1.txt')
with open('TestFile2.txt', 'w') as m:
cmd = Popen(["file", filename], stdout=m, stderr=PIPE)
print('Saved as TestFile2.txt')
def dirDifference(dir1, dir2):
"""
dirDifference compares 2 paths, 1 before being ran and 1 after to get a list of all new files to be moved
"""
#Compares Directory before and after running
dif = [i for i in dir1 + dir2 if i not in dir1 or i not in dir2]
separator = ' '
x = separator.join(map(str, dif))
return x
def moveDir(filename, moveFiles):
"""
moveDir: Moves the new files to the directory.
"""
Dir = str(filename) + "_dir"
cmd = Popen(["mv", moveFiles, filename + "_dir"])