import os import random import shutil # 步骤1:创建文件并进行删除确认 file_path = '' if os.name == 'nt': # Windows系统 file_path = 'D:\\test.txt' elif os.name == 'posix': # Linux系统 file_path = '\\usr\\local\\test.txt' else: print("不支持的操作系统!") exit(1) if os.path.exists(file_path): while True: delete_choice = input(f"文件 {file_path} 已存在,是否删除并重新创建? (y/n): ") if delete_choice.lower() == 'y': os.remove(file_path) print(f"文件 {file_path} 已删除!") break elif delete_choice.lower() == 'n': print("请手动删除文件后重新运行程序!") exit(1) else: print("输入无效,请重新输入!") # 步骤2:随机写入10个小数并检查是否满足要求 neg_count = 0 while neg_count < 2: random_nums = [round(random.uniform(-1, 1), 2) for _ in range(10)] neg_count = sum(1 for num in random_nums if num < 0) with open(file_path, 'w') as file: file.write(','.join(map(str, random_nums))) print("已创建文件 {} 并已写入 10 个随机数据!".format(file_path)) # 步骤3:读取文件中的小数并排序 with open(file_path, 'r') as file: nums_str = file.read().strip() nums_list = list(map(float, nums_str.split(','))) print("从D:\\test.txt中读取到的数据为:".format(file_path, nums_str)) print(nums_str) sorted_nums_list = sorted(nums_list, reverse=True) # 修改为排序后的列表 sorted_nums_str = ','.join(map(str, sorted_nums_list)) # 修改为排序后的字符串 # 步骤4:删除小数点、负号和逗号 sorted_nums_str = sorted_nums_str.replace(',', '') print('排序之后得到的字符串为:') print(sorted_nums_str) sorted_nums_str = sorted_nums_str.replace('.', '').replace(',', '').replace('0','') sorted_nums_int = (sorted_nums_str) formatted_result = format(sorted_nums_str) print("经过处理之后的字符串为:\n{}".format(formatted_result)) # 步骤5:追加计算结果到文件 with open(file_path, 'a') as file: file.write('\n' + formatted_result) print("已追加该数值!".format(file_path)) src_file = r'D:\test.txt' dst_file = r'D:\test_solved.txt' shutil.copy2(src_file,dst_file) print('已移动至当前目录!') print('已改名!') print('程序运行完毕!')
时间: 2023-06-14 19:04:55 浏览: 193
这是一个 Python 程序,主要进行以下步骤:
1. 创建文件并进行删除确认;
2. 随机生成 10 个小数并检查是否满足要求;
3. 读取文件中的小数并排序;
4. 删除小数点、负号和逗号,并格式化输出;
5. 追加计算结果到文件;
6. 复制文件并改名。
其中,步骤1需要用户输入确认是否删除已存在的文件;步骤2需要生成满足要求的随机数;步骤3对读取到的小数进行排序;步骤4需要删除小数点、负号和逗号,并格式化输出;步骤5需要将计算结果追加到文件末尾;步骤6需要将文件复制到当前目录并改名。
相关问题
import osimport shutil# 遍历指定目录下的所有文件和子文件夹def traverse_dir(root_dir): for subdir, _, files in os.walk(root_dir): for file in files: file_path = os.path.join(subdir, file) # 获取文件名和后缀 file_name, file_ext = os.path.splitext(file) # 创建同名文件夹(如果不存在) target_dir = os.path.join(subdir, file_name) if not os.path.exists(target_dir): os.mkdir(target_dir) # 移动文件到同名文件夹 shutil.move(file_path, os.path.join(target_dir, file))if __name__ == '__main__': traverse_dir('/path/to/root/dir')
这段代码的作用是遍历指定目录下的所有文件和子文件夹,将同名文件移动到同名文件夹中。具体来说,它会先遍历目录下的所有文件和子文件夹,对于每个文件,它会获取文件名和后缀,然后创建同名文件夹(如果不存在),最后将文件移动到同名文件夹中。如果你执行这段代码时将`/path/to/root/dir`替换为实际的目录路径,它就会对该目录及其子目录进行上述操作。
import os import shutil # 相对路径 relative_path = '.\dataset1.0\labels' # 遍历目录下的所有文件 for file_name in os.listdir(relative_path): file_path = os.path.join(relative_path, file_name) if file_name.endswith('.txt'): with open(file_path, 'r') as file: # 读取文件第一行的第一个数字作为标签类别编号 first_line = file.readline() label_number = int(first_line.strip()[0]) # 构建目标文件夹路径 destination_folder = '.\C{}'.format(label_number) # 如果目标文件夹不存在,则创建目标文件夹 if not os.path.exists(destination_folder): os.makedirs(destination_folder) # 构建目标文件路径 destination_file = os.path.join(destination_folder, file_name) # 移动文件到目标文件夹 shutil.move(file_path, destination_file)
好的,你想要将以上代码循环1000次。下面是修改后的代码:
```python
import os
import shutil
# 相对路径
relative_path = '.\dataset1.0\labels'
# 遍历目录下的所有文件
for _ in range(1000):
for file_name in os.listdir(relative_path):
file_path = os.path.join(relative_path, file_name)
if file_name.endswith('.txt'):
with open(file_path, 'r') as file:
# 读取文件第一行的第一个数字作为标签类别编号
first_line = file.readline()
label_number = int(first_line.strip()[0])
# 构建目标文件夹路径
destination_folder = '.\C{}'.format(label_number)
# 如果目标文件夹不存在,则创建目标文件夹
if not os.path.exists(destination_folder):
os.makedirs(destination_folder)
# 构建目标文件路径
destination_file = os.path.join(destination_folder, file_name)
# 移动文件到目标文件夹
shutil.move(file_path, destination_file)
```
现在以上代码会将指定路径下的文件循环1000次,每次循环都会根据读取的文件内容进行相应的操作。请确保你提供的路径和代码逻辑是正确的,并根据需要进行必要的修改。
阅读全文