我正在做一个学校作业,我必须从用户那里获取输入并将其保存到文本文件中。 我的文件结构如下所示: -客户注册 - 客户ID -.txt文件1-5
它可以保存在python文件夹中,我可以这样创建文件夹:
os.makedirs("Customer register/Customer ID")
我的问题是,当我不知道目录时,如何在目录中设置文本文件的存储路径?这样,无论程序在何处运行,都保存在我创建的“客户ID”文件夹中(但在计算机上运行该程序)? 另外,如何在Windows和Mac上都可以使用此功能?
我还希望编写程序使其能够执行多次,并检查该文件夹是否存在,并保存到“ Customer ID”文件夹中(如果已存在)。有办法吗?
编辑: 这是我要使用的代码:
try:
dirs = os.makedirs("Folder")
path = os.getcwd()
os.chdir(path + "/Folder")
print (os.getcwd())
except:
if os.path.exists:
path = os.getcwd()
unique_filename = str(uuid.uuid4())
customerpath = os.getcwd()
os.chdir(customerpath + "/Folder/" + unique_filename)
我能够创建一个文件夹并更改目录(“ try”中的所有内容都可以使用)。 创建此文件夹后,我想使用随机生成的文件夹名称(用于保存客户文件)创建第二个文件夹。我不能以相同的方式来工作。 错误: FileNotFoundError:[WinError 2]系统找不到指定的文件:'C:\ Users \ 48736 \ PycharmProjects \ tina / Folder / 979b9026-b2f6-4526-a17a-3b53384f60c4'
编辑2:
try:
os.makedirs("Folder")
path = os.getcwd()
os.chdir(path + "/Folder")
print (os.getcwd())
except:
if os.path.exists:
path = os.getcwd()
os.chdir(os.path.join(path, 'Folder'))
print(os.getcwd())
def userId(folderid):
try:
if not os.path.exists(folderid):
os.makedirs(folderid)
except:
if os.path.exists(folderid):
os.chdir(path + "/Folder/" + folderid)
userId(str(uuid.uuid4()))
print(os.getcwd())
因此,我现在可以创建一个文件夹,将目录更改为我创建的文件夹,并在该文件夹中创建一个具有唯一文件名的新文件夹。 但是我无法再次将目录更改为具有唯一文件名的文件夹。 有什么建议吗?
我尝试过:
os.chdir(path + "/Folder/" + folderid)
os.chdir(path, 'Folder', folderid)
os.chdir(os.path.join(path, 'Folder', folderid))
但是仍然停留在:C:\ Users \ 47896 \ PycharmProjects \ tina \ Folder
答案 0 :(得分:1)
您可以在创建目录命令中使用相对路径,即
os.makedirs("./Customer register/Customer ID")
在项目根目录(=主调用方所在的位置)或
中创建文件夹 os.makedirs("../Customer register/Customer ID")
在父目录中。
当然,您可以根据需要遍历文件树。
有关您问题中提到的特定选项,请参见Python 3 docs上的makedirs
文档
答案 1 :(得分:0)
这是解决方法
import os
import shutil
import uuid
path_on_system = os.getcwd() # directory where you want to save data
path = r'Folder' # your working directory
dir_path = os.path.join(path_on_system, path)
if not os.path.exists(dir_path):
os.makedirs(dir_path)
file_name = str(uuid.uuid4()) # file which you have created
if os.path.exists(file_name) and os.path.exists(dir_path):
shutil.move(file_name,os.path.join(dir_path,file_name))
else:
print(" {} does not exist".format(file_name))