我正在尝试在Python中使用相对路径,并且我想将csv文件与python代码放在单独的文件夹中。
我的python程序位于以下文件夹中:
G:\projects\code
我想读取此文件,该文件是上一级的:
G:\projects\data\sales.csv
如何使用 pathlib 指定比当前工作文件夹高一级的路径?我不想更改当前的工作文件夹。
我尝试过:
from pathlib import Path
file = Path.cwd() /'..'/'data'/'sales.csv'
但是现在'file'变量等于:
'G:/projects/code/../data/sales.csv'
我通读了docs,但那里没有解释,或者我只是想念它。
答案 0 :(得分:2)
尽管路径中包含“ ..”(这仍然是一个问题)(您仍然可以使用此路径在Python中打开文件等),但是您可以使用resolve()
来标准化该路径:
from pathlib import Path
path = Path.cwd() / '..' / 'data' / 'sales.csv'
print(path) # WindowsPath('G:/projects/code/../data/sales.csv')
print(path.resolve()) # WindowsPath('G:/projects/data/sales.csv')
NB:我个人将命名一个包含路径path
而不是file
的变量。这样您以后就可以file = open(path)
了。
答案 1 :(得分:0)
您是说“读取我的csv文件”吗?
import
关键字在Python中具有不同的含义(仅导入其他Python模块)。
无论如何,为了读取位于Python文件上方一个文件夹的文件,您可以使用以下方法:
import os
filePath = os.path.dirname(__file__)+'/../'+fileName
fileDesc = open(filePath)
fileData = fileDesc.read()
fileDesc.close()
...
答案 2 :(得分:0)
char buf[100000];
char* L = buf;
char* R = buf;
char non_fancy_getchar()
{
if (L == R) {
/* reset pointers and try to read stdin again */
L = buf;
R = L + fread(buf, 1, sizeof(buf), stdin);
}
/* return next char or EOF */
return (L == R) ? EOF : *L++;
}
产生
print(
Path(__file__).parent, # the folder
Path(__file__).parent.parent, # the folder's parent
sep='\n'
)
print(
Path(
Path(__file__).parent.parent, 'hello.py'
)
)
具有此文件结构
C:\Users\isik\Desktop\Python\MessAround\project\module
C:\Users\isik\Desktop\Python\MessAround\project
C:\Users\isik\Desktop\Python\MessAround\project\hello.py
当代码位于-project
-module
-__init__.py
-hello.py
-__init__.py