用Python写一段代码,遍历C盘和D盘的文件并写入“D:\全盘文件.txt”中,如果有新文件加入或删除文件则在“D:\全盘文件.txt”中记录。
时间: 2023-09-14 19:05:21 浏览: 83
### 回答1:
下面是一个示例代码,用于遍历C盘和D盘的文件,并将文件列表写入D盘的“全盘文件.txt”中。如果有新文件加入或删除文件,则在“全盘文件.txt”中记录这些更改:
```python
import os
import time
# 指定要遍历的盘符
drives = ['C:', 'D:']
# 定义记录文件路径
log_file = r'D:\全盘文件.txt'
# 遍历文件并记录到日志文件中
while True:
with open(log_file, 'w') as f:
for drive in drives:
for root, dirs, files in os.walk(drive):
for name in files:
f.write(os.path.join(root, name) + '\n')
f.flush()
time.sleep(60)
```
这段代码使用了Python内置的os模块来遍历文件。在每次遍历文件之后,代码会将文件列表写入到“全盘文件.txt”中,并且等待60秒后再次遍历文件。如果有新文件加入或删除文件,则会在“全盘文件.txt”中记录这些更改。
### 回答2:
下面是使用Python代码实现上述功能的一种方法:
```python
import os
import time
def write_file(file_path, content):
with open(file_path, 'a') as file:
file.write(content + '\n')
def get_file_list(folder_path):
file_list = []
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
file_list.append(file_path)
return file_list
def record_changes(prev_file_list, current_file_list):
added_files = set(current_file_list) - set(prev_file_list)
removed_files = set(prev_file_list) - set(current_file_list)
if added_files or removed_files:
write_file("D:\\全盘文件.txt", f"[{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}]:")
for file in added_files:
write_file("D:\\全盘文件.txt", f"新增文件: {file}")
for file in removed_files:
write_file("D:\\全盘文件.txt", f"删除文件: {file}")
def main():
prev_file_list = []
while True:
current_file_list = get_file_list('C:\\') + get_file_list('D:\\')
if prev_file_list:
record_changes(prev_file_list, current_file_list)
prev_file_list = current_file_list
time.sleep(60) # 每分钟检查一次文件变化并记录
if __name__ == "__main__":
main()
```
该代码会不断遍历C盘和D盘上的文件,并将文件路径写入"D:\全盘文件.txt"中。如果有新文件被添加或文件被删除,该文件也会记录这些变化,并在"D:\全盘文件.txt"中添加相应的记录。
### 回答3:
以下是用Python实现遍历C盘和D盘的文件,并将结果写入"D:\全盘文件.txt",同时记录新文件的加入和删除文件的代码示例:
```python
import os
import time
def traverse_files(folder_path):
file_list = []
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
file_list.append(file_path)
return file_list
def update_record(record_file, file_list):
with open(record_file, 'r') as f:
previous_files = f.read().splitlines()
with open(record_file, 'w') as f:
current_files = set(file_list)
new_files = current_files - set(previous_files)
deleted_files = set(previous_files) - current_files
for file in new_files:
f.write(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}]: New file added - {file}\n")
for file in deleted_files:
f.write(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}]: File deleted - {file}\n")
for file in current_files:
f.write(file + '\n')
def main():
c_drive_path = 'C:\\'
d_drive_path = 'D:\\'
record_file = 'D:\\全盘文件.txt'
c_drive_files = traverse_files(c_drive_path)
d_drive_files = traverse_files(d_drive_path)
all_files = c_drive_files + d_drive_files
update_record(record_file, all_files)
if __name__ == "__main__":
main()
```
以上代码会在给定的C盘和D盘路径下遍历所有文件,并将结果写入"D:\全盘文件.txt"文件中。同时,如果有新文件加入或已有文件被删除,则会在同一文件中记录下来。记录的格式为:"日期时间: 新文件加入/文件被删除 - 文件路径"。