Python 虚拟环境 OS 路径问题
Python Virtual Env OS PATH Issue
我使用 venv 创建了一个虚拟环境 (Python 3.xx)。
那里,我只安装了几个包:
我有一个 Python 脚本,它读取给定目录中的文件并使用 Pandas 操作它们的数据:
import pandas as pd
import os
path = os.getcwd()+'\Ph3_Charts'+'\'
print(path)
from os import listdir
from os.path import isfile, join
days_range = [f for f in listdir(path) if isfile(join(path, f))]
dataframes = []
count = 0
for i in days_range:
try:
print(i,count)
dataframes.append(pd.read_excel(path+i, sheet_name = "Issues Jira", index_col=0))
count += 1
except:
pass
问题似乎出在变量 path
上,因为程序在尝试从每个列出的文件中附加一些数据帧时中断。
然而,上面红色标记的段落显示路径很好...最奇怪的是,当我在本地运行这个程序时,迭代工作正常。
请猜猜为什么会这样?
问题的根源是您强制脚本使用反斜杠 \
作为 the path separator. Your remote system uses Linux whereas you're using Windows locally. Unlike Windows, Linux and macOS systems prefer to use the forward slash 来分隔系统路径中的目录。这就是差异的原因。
下面是一个正确的platform independent实现,避免了这种不必要的特殊性:
import pandas as pd
import os
from os import listdir
from os.path import isfile, join
# Get CWD
CWD = os.getcwd()
# Join CWD with `Ph3_Charts` folder
PH3_CHART_PATH = os.path.join(CWD, 'Ph3_Charts')
print("PH3 chart path: '"+PH3_CHART_PATH+"'")
days_range = [f for f in listdir(PH3_CHART_PATH) if isfile(join(PH3_CHART_PATH, f))]
dataframes = []
count = 0
for i in days_range:
try:
print(i,count)
dataframes.append(pd.read_excel(PH3_CHART_PATH+i, sheet_name = "Issues Jira", index_col=0))
count += 1
except Exception as e: # catch *all* exceptions
print(e) # print it out
此解决方案适用于或不适用您讨论的 venv
功能。 Please see the file diff here(您的版本与上述代码的差异比较)。
我使用 venv 创建了一个虚拟环境 (Python 3.xx)。
那里,我只安装了几个包:
我有一个 Python 脚本,它读取给定目录中的文件并使用 Pandas 操作它们的数据:
import pandas as pd
import os
path = os.getcwd()+'\Ph3_Charts'+'\'
print(path)
from os import listdir
from os.path import isfile, join
days_range = [f for f in listdir(path) if isfile(join(path, f))]
dataframes = []
count = 0
for i in days_range:
try:
print(i,count)
dataframes.append(pd.read_excel(path+i, sheet_name = "Issues Jira", index_col=0))
count += 1
except:
pass
问题似乎出在变量 path
上,因为程序在尝试从每个列出的文件中附加一些数据帧时中断。
然而,上面红色标记的段落显示路径很好...最奇怪的是,当我在本地运行这个程序时,迭代工作正常。
请猜猜为什么会这样?
问题的根源是您强制脚本使用反斜杠 \
作为 the path separator. Your remote system uses Linux whereas you're using Windows locally. Unlike Windows, Linux and macOS systems prefer to use the forward slash 来分隔系统路径中的目录。这就是差异的原因。
下面是一个正确的platform independent实现,避免了这种不必要的特殊性:
import pandas as pd
import os
from os import listdir
from os.path import isfile, join
# Get CWD
CWD = os.getcwd()
# Join CWD with `Ph3_Charts` folder
PH3_CHART_PATH = os.path.join(CWD, 'Ph3_Charts')
print("PH3 chart path: '"+PH3_CHART_PATH+"'")
days_range = [f for f in listdir(PH3_CHART_PATH) if isfile(join(PH3_CHART_PATH, f))]
dataframes = []
count = 0
for i in days_range:
try:
print(i,count)
dataframes.append(pd.read_excel(PH3_CHART_PATH+i, sheet_name = "Issues Jira", index_col=0))
count += 1
except Exception as e: # catch *all* exceptions
print(e) # print it out
此解决方案适用于或不适用您讨论的 venv
功能。 Please see the file diff here(您的版本与上述代码的差异比较)。