Python:在任何 computer/operating 系统上查找 CSV 文件
Python: Find a CSV file on any computer/operating system
我叫塔里埃森。我正在从事一个学校项目,我必须为此执行多项数据分析。首先,我需要一个代码来按名称在整个计算机中搜索我的文件。目前我有一个代码,我从 Stack overflow 上的另一个线程借来的,但我需要它也能在不同的操作系统上工作,比如 mac。还有我现在使用的代码,我不知道如何将结果转换成我可以用 pd.read_csv()
.
打开的东西
到目前为止,这是我的代码:
def find_file(root_folder, rex):
for root,dirs,files in os.walk(root_folder):
for f in files:
result = rex.search(f)
if result:
print(os.path.join(root, f))
break # if you want to find only one
def find_file_in_all_drives(file_name):
#create a regular expression for the file
rex = re.compile(file_name)
for drive in win32api.GetLogicalDriveStrings().split('[=12=]0')[:-1]:
find_file( drive, rex )
find_file_in_all_drives( "AB_NYC_2019.csv" )
df_location = find_file_in_all_drives( "AB_NYC_2019.csv" )
df = pd.read_csv(r'"{}"'.format(df_location))
总结一下我的问题:
1:如何更改我的代码以使其适用于任何平台?
2: 如何使用代码中的路径,使用 pandas 将其读取为 csv
?
我对 python 完全陌生。我通过Datacamp学习了基础知识以供学习。
感谢您的宝贵时间!
Mac是基于Linux的OS。因此,对于 Mac 和 Linux,您可以使用终端本身的“find”实用程序。
搜索特定目录(例如/home/project/csv)-
find /home/project/csv | grep "AB_NYC_2019.csv"
搜索整个文件系统 -
find / | grep "AB_NYC_2019.csv"
但是,如果您仍然希望它成为您 python 计划的一部分,您可以 运行
import subprocess
paths = [line.decode("utf-8") for line in subprocess.check_output("find /home/project/csv | grep 'AB_NYC_2019.csv'", shell=True)]
这将在搜索目录中找到所有此类文件,并且 return 它们的路径列表。
要确定您的 python 程序在哪个系统上 运行ning,
import platform
platform.system()
#Darwin - for Mac OS
#Linux - for Linux
#Windows - for Windows
您可以在 platform.system() 的值上设置 if 条件,并且 运行 相应地查找函数。
希望对您有所帮助。
我叫塔里埃森。我正在从事一个学校项目,我必须为此执行多项数据分析。首先,我需要一个代码来按名称在整个计算机中搜索我的文件。目前我有一个代码,我从 Stack overflow 上的另一个线程借来的,但我需要它也能在不同的操作系统上工作,比如 mac。还有我现在使用的代码,我不知道如何将结果转换成我可以用 pd.read_csv()
.
到目前为止,这是我的代码:
def find_file(root_folder, rex):
for root,dirs,files in os.walk(root_folder):
for f in files:
result = rex.search(f)
if result:
print(os.path.join(root, f))
break # if you want to find only one
def find_file_in_all_drives(file_name):
#create a regular expression for the file
rex = re.compile(file_name)
for drive in win32api.GetLogicalDriveStrings().split('[=12=]0')[:-1]:
find_file( drive, rex )
find_file_in_all_drives( "AB_NYC_2019.csv" )
df_location = find_file_in_all_drives( "AB_NYC_2019.csv" )
df = pd.read_csv(r'"{}"'.format(df_location))
总结一下我的问题:
1:如何更改我的代码以使其适用于任何平台?
2: 如何使用代码中的路径,使用 pandas 将其读取为 csv
?
我对 python 完全陌生。我通过Datacamp学习了基础知识以供学习。
感谢您的宝贵时间!
Mac是基于Linux的OS。因此,对于 Mac 和 Linux,您可以使用终端本身的“find”实用程序。
搜索特定目录(例如/home/project/csv)-
find /home/project/csv | grep "AB_NYC_2019.csv"
搜索整个文件系统 -
find / | grep "AB_NYC_2019.csv"
但是,如果您仍然希望它成为您 python 计划的一部分,您可以 运行
import subprocess
paths = [line.decode("utf-8") for line in subprocess.check_output("find /home/project/csv | grep 'AB_NYC_2019.csv'", shell=True)]
这将在搜索目录中找到所有此类文件,并且 return 它们的路径列表。
要确定您的 python 程序在哪个系统上 运行ning,
import platform
platform.system()
#Darwin - for Mac OS
#Linux - for Linux
#Windows - for Windows
您可以在 platform.system() 的值上设置 if 条件,并且 运行 相应地查找函数。
希望对您有所帮助。