如何防止Python脚本自我删除?

10 浏览
0 Comments

如何防止Python脚本自我删除?

使用此文件时请注意,它可能会删除同一文件夹中的文件\n嗨,这是一个用于删除文件的Python 3脚本,我想知道如何防止它删除自身。\n代码如下:\n

import os
import sys
import glob
fileList = glob.glob('*.*')
print(fileList)
for filePath in fileList:
    try:
        os.remove(filePath)
    except:
        print("删除文件时出错:", filePath)

0
0 Comments

问题原因:在执行脚本时,脚本会删除当前目录下的所有文件,包括自身。

解决方法:在删除文件之前,先获取所有文件名,然后排除不想删除的文件名,最后再删除剩余的文件名。

代码如下:

import os
import sys
import glob
# 获取当前脚本的文件名
current_script = os.path.basename(__file__)
# 获取当前目录下的所有文件名
fileList = glob.glob('*.*')
# 排除当前脚本的文件名
fileList.remove(current_script)
# 打印剩余文件名
print(fileList)
# 遍历剩余文件名,尝试删除文件
for filePath in fileList:
    try:
        os.remove(filePath)
    except:
        print("Error while deleting file: ", filePath)

以上代码通过使用`os`和`glob`模块,获取了当前脚本的文件名和当前目录下的所有文件名。然后,通过`remove()`函数将当前脚本的文件名从文件列表中排除。最后,使用`os.remove()`函数遍历剩余的文件名,尝试删除文件。如果删除过程中发生错误,会打印出具体的错误信息。

0
0 Comments

如何防止Python脚本删除自身?

有时候,在编写Python脚本时,我们可能需要删除一些文件或文件夹。但是,有时候我们希望保留当前脚本文件,以防止意外删除。下面是一个代码示例,演示如何通过比较文件名来跳过当前脚本文件的删除操作。

import os
import sys
import glob
current_script = os.path.basename(__file__)
fileList = glob.glob('*.*')
print(fileList)
for filePath in fileList:
    if filePath != current_script:
        try:
            os.remove(filePath)
        except:
            print("Error while deleting file : ", filePath)

上述代码中,我们首先导入了必要的模块:os、sys和glob。然后,我们使用`os.path.basename(__file__)`来获取当前脚本的文件名,并将其赋值给变量`current_script`。接下来,我们使用`glob.glob('*.*')`获取当前目录下的所有文件,并将它们保存在列表`fileList`中。

然后,我们使用一个循环遍历`fileList`中的每个文件路径。如果文件路径不等于当前脚本文件的路径,即`filePath != current_script`,我们尝试使用`os.remove()`函数删除该文件。如果删除过程中出现异常,则打印出错信息。

这样,我们就可以防止当前脚本文件被删除。

在上述代码中,还有一个略微更简洁的写法:`current_script = sys.argv[0]`。这样做也是可以的。

如果你想要删除子文件夹及其内容,可以参考这个链接:stackoverflow.com/questions/13118029/…

希望这个回答对你有帮助!如果你还有其他问题,请随时提问。

0