编写程序,输入一个目录的路径: (1)输入一个文件名(假设为test.txt),检查该目录及其子目录的文件是否存在一个名为 test.txt的文件。 (2)检查该目录及其子目录中的所有文件是否存在两个完全相同的文件(文件名及其文件内容都相同)。
时间: 2024-01-26 08:04:23 浏览: 61
好的,我来回答您的问题。
针对您的第一个问题,我可以编写一个简单的 Python 程序来实现这个功能:
```python
import os
def find_file(path, filename):
for root, dirs, files in os.walk(path):
if filename in files:
return os.path.join(root, filename)
return None
path = input("请输入目录路径:")
filename = input("请输入文件名:")
result = find_file(path, filename)
if result:
print(f"找到文件 {filename},路径为 {result}")
else:
print(f"未找到文件 {filename}")
```
这个程序使用了 Python 的 os 模块中的 walk() 函数来遍历目录及其子目录下的所有文件和文件夹。如果找到了指定的文件,则返回该文件的路径;否则返回 None。
对于您的第二个问题,我可以使用 Python 的 hashlib 模块来计算文件的哈希值,从而判断两个文件是否完全相同。具体实现可以参考下面的程序:
```python
import os
import hashlib
def find_duplicate_files(path):
files = {}
for root, dirs, filenames in os.walk(path):
for filename in filenames:
full_path = os.path.join(root, filename)
with open(full_path, "rb") as f:
content = f.read()
sha1_hash = hashlib.sha1(content).hexdigest()
if sha1_hash in files:
files[sha1_hash].append(full_path)
else:
files[sha1_hash] = [full_path]
return {k:v for k,v in files.items() if len(v) > 1}
path = input("请输入目录路径:")
result = find_duplicate_files(path)
if result:
print("找到以下重复文件:")
for sha1_hash, filenames in result.items():
print(f"哈希值为 {sha1_hash} 的文件:")
for filename in filenames:
print(f"\t{filename}")
else:
print("未找到重复文件")
```
这个程序使用了 Python 的 hashlib 模块中的 sha1() 函数来计算文件的哈希值。对于每个文件,程序先计算出它的哈希值,然后将哈希值相同的文件放到同一个列表中。最后,程序返回所有列表长度大于 1 的项,即重复的文件。
阅读全文