Python-如何更改目录

时间:2018-12-17 13:31:59

标签: python

我正在做一个学校作业,我必须从用户那里获取输入并将其保存到文本文件中。 我的文件结构如下所示: -客户注册 - 客户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

2 个答案:

答案 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))