如何防止Python脚本自我删除?
问题原因:在执行脚本时,脚本会删除当前目录下的所有文件,包括自身。
解决方法:在删除文件之前,先获取所有文件名,然后排除不想删除的文件名,最后再删除剩余的文件名。
代码如下:
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()`函数遍历剩余的文件名,尝试删除文件。如果删除过程中发生错误,会打印出具体的错误信息。
如何防止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/…。
希望这个回答对你有帮助!如果你还有其他问题,请随时提问。