将通用路径设置为Python中的文件(没有循环) -- python 领域 和 path 领域 相关 的问题

Setting universal path to file in Python (without for loop)


0
vote

问题

中文

我正在尝试设置我的工作目录,以便它将在所有机器上是通用的 - 但没有循环。我正在使用以下代码,基于此线程:在目录中查找特定路径在Python

  import os try:                                                                                                                             start = '/Users'                                                                                                             for dirpath, dirnames, filenames in os.walk(start):         for filename in filenames:             if filename == "US_Accidents_Dec19.csv":                 filename = os.path.join(dirpath, filename)                 os.chdir(dirpath) except:     pass   try:     start1 = "C:\Users"     for dirpath, dirnames, filenames in os.walk(start1):         for filename in filenames:             if filename == "US_Accidents_Dec19.csv":                 filename = os.path.join(dirpath, filename)                 os.chdir(dirpath) except:     pass   

我如何在不使用循环的情况下执行此操作?为缓慢的脚本。

英文原文

I'm trying to set up my working directory so that it will be universal on all machines xe2x80x93 but without for loops. I'm using the following code, based on this thread: Finding particular path in directory in Python

import os try:                                                                                                                             start = '/Users'                                                                                                             for dirpath, dirnames, filenames in os.walk(start):         for filename in filenames:             if filename == "US_Accidents_Dec19.csv":                 filename = os.path.join(dirpath, filename)                 os.chdir(dirpath) except:     pass   try:     start1 = "C:\\Users"     for dirpath, dirnames, filenames in os.walk(start1):         for filename in filenames:             if filename == "US_Accidents_Dec19.csv":                 filename = os.path.join(dirpath, filename)                 os.chdir(dirpath) except:     pass 

How would I do this without using for loops? Makes for a slow script.

     
 
 

回答列表

1
 
vote

我建议的是创建一个 project_path 变量,这将是该项目的本地路径。它可以通过创建文件来完成 - 例如 project_path.py - 包含

  import os  project_path: str = os.path.abspath(os.path.dirname(__file__))   

所以你的项目看起来像

  java -cp "./class;%CLASSPATH%" org.antlr.v4.gui.TestRig %* 0  

然后,您可以轻松使用如下:

  java -cp "./class;%CLASSPATH%" org.antlr.v4.gui.TestRig %* 1  

这将如何运作,无论机器的架构,操作系统等。

 

What I would suggest is creating a project_path variable which will be the machine's local path to the project. It can be done by creating a file - say project_path.py - containing

import os  project_path: str = os.path.abspath(os.path.dirname(__file__)) 

So your project looks something like

 - __init__.py   - some_folder  |-- some_script.py  |-- data_file  - some_other_script.py  - project_path.py 

Then you can easily use it as follows:

from project_path import project_path  with open(f'{project_path}/some_folder/data_file', 'r') as file:     # do some stuff   # In your case with open(f'{project_path}/US_Accidents_Dec19.csv', 'r') as file:     ... 

This will work regardless of the machine's architecture, os, etc.

 
 
0
 
vote

尝试使用pathlib库。它应该照顾你的格式。 假设文件文件夹在您自己的主目录中的某个地方,此代码应该执行以下操作:

  import os from pathlib import Path   generator = Path.home().glob('**/US_Accidents_Dec19.csv') wd = list(generator)[0] os.chdir(wd)   

Pathlib库可以与操作系统无关的路径一起使用。 Path.home() 查找您的用户目录,例如, ' users myaccount'或'c: users myaccount'。

glob() 函数可以根据您的模式找到文件。 **/ 意味着搜索所有子文件夹。

如果您不仅要搜索您的用户目录,而且所有用户目录,只需执行 Path.home().parent.glob('**/US_Accidents_Dec19.csv')

如果您要查找的文件可以在相对于脚本中的同一文件夹中或在子文件夹中找到,请尝试使用 Path(__file__).resolve() 以获取文件的完整路径,然后在此使用glob。

  generator = Path(__file__).resolve().glob('**/US_Accidents_Dec19.csv') wd = list(generator)[0] os.chdir(wd)   

glob() 函数返回生成器对象。可以将生成器对象与 list(obj) 的列表变成列表,或者您可以使用for-loop迭代它,就像它是列表一样。

 

Try using the pathlib library. It should take care of the formatting for you. Assuming the folder with the file is somewhere in your own home directory, this code should do the trick:

import os from pathlib import Path   generator = Path.home().glob('**/US_Accidents_Dec19.csv') wd = list(generator)[0] os.chdir(wd) 

The pathlib library can work with paths independent of your operating system. Path.home() finds your user directory, e.g. '\Users\MyAccount' or 'C:\Users\MyAccount'.

The glob() function can find files based on patterns for you. **/ means search all subfolders.

If you want to search not only your users' directory, but all users directories, simply do Path.home().parent.glob('**/US_Accidents_Dec19.csv')

If the file you are looking for can be found in the same folder or in subfolders relative to your script, try using Path(__file__).resolve() to get the complete path to your file and then use glob on this.

generator = Path(__file__).resolve().glob('**/US_Accidents_Dec19.csv') wd = list(generator)[0] os.chdir(wd) 

The glob() function returns a generator object. A generator object can be turned into a list with list(obj) or you can iterate over it with a for-loop as if it was a list.

 
 

相关问题

2  rq工作人员扔“valueerror”  ( Rq worker throwing valueerror ) 
我试图在我的烧瓶申请上获取RQ / RQ工作者。我试图将其缩至一个非常简单的测试用例。这是一般的想法: 用户访问 /test 页面。触发要排队的作业并返回排队作业的 job_key 工人( worker.py )处理排队的作业。 用户可以访问 /retrieve/<job_key> 页面来检索结果。 [这未显示...

0  使用多处理嵌套并行进程  ( Nesting parallel processes using multiprocessing ) 
是否有一种方法在已经并行化的函数中并行运行函数?我知道使用multiprocessing.pool()这是不可能作为守护进程无法创建子进程。我相当新的并行计算,并努力找到解决方法。 我目前有几千个计算,需要使用其他一些商业上可用的量子机械码I接口并行运行。每个计算,有三个后续计算,需要在父计算的正常终止时并行执行,如...

0  从HTML元素下载图像  ( Download image from html element ) 
我需要下载包含图像的SRC文件。我们可以在下一个选项卡上复制源并粘贴它,以便我们可以下载图像。但是我需要下载图像递归i.e 1000图像。此外,我正在使用的网站包含CAPTCHA的登录。是否有任何方法可以通过dev控制台或任何可能的方式 ...

0  服务兼容性意外退出。状态代码是:-9  ( Service chromedriver unexpectedly exited status code was 9 ) 
我对 9988876612 进行了诸多问题,用于使用solemiumings。 $http.get()3 已安装并将其放在与Python文件相同的文件夹中。似乎加载jupyter小区几秒钟的所有建议都被拒绝了以下消息: $http.get()4 其中我使用 $http.get()5 下载它们。在这里我的代码: ...

9  在Python中线性拟合,在x和y坐标中具有不确定性[关闭]  ( Linear fitting in python with uncertainty in both x and y coordinates ) 
关闭。这个问题不符合堆栈溢出指南。它目前不接受答案。 想要改进这个问题?更新问题,所以它是关于堆栈溢出的主题。 closed 1年前。 ...

1  为什么PIP显示包未安装到当前公共区域环境的网站包装?  ( Why does pip show packages which were not installed to the site packages of the ) 
我有Anaconda(带有Python 2版本的公共4.5.11),我始终使用PIP在我的环境中安装包(我不知道这是早些时候的次优)。然而,一些包装,例如,模拟,意外地在: 位置:$ HOME / .local / lib / python3.6 / site-packages (基于Pip Show Mock) ...

0  KIVY - 如何将滚动视图拖放到另一个布局的项目?  ( Kivy how to drag and drop items from scrollview to another layout ) 
我试图拖动排列在GridLayout(确实在滚动视图内)的一些图像到外布局。 要拖动的图像具有其 on_touch_down 事件定义,当单击映像时,父父级将从 WidgetMenu 更改为 MainLayout 所以它可以是拖动在这些小部件之间。当前问题是当我触摸图像时,拖船丢失了。 完整代码: import...

0  int函数及其参数  ( The int function and its parameters ) 
我正在研究这个系列问题。 我不了解问题11,使用 int() 的方式。我理解,将 x 直接转换为 int 导致一些零的丢失,所以这样做是不可能的,但我不理解什么 intp = int(p,2) 假设要做。打印出 intp 我得到以下值 4,3,10,9 。如何与 0100,0011,1010,1001 相...

1  根据条件平等查找DataFrame中的匹配对或链条  ( Find matching pairs or chains of persons in dataframe based on equality of cond ) 
我是Python的初学者 - 首先我想为我相当长的问题而道歉,我写的可能非常丑陋的程序来解决我的"问题" 。 问题如下:想象一下房屋的交换。人们可以互相交换他们的房子。 1人从"A" 想要去"B" ,从"B" 的人2想要去"A" 。然后实现了匹配或易货物,并且两者都不再可用于进一步匹配。此外,应涵盖案例,该人1希望从...

10  在熊猫列表中切割多个列,按名称列表  ( Slicing multiple ranges of columns in pandas by list of names ) 
我正在尝试用两种不同的方法选择熊猫DataFrame中的多列: 1)通过列数,例如,列1-3和列6。 和 2)通过列名列表,例如: years = list(range(2000,2017)) months = list(range(1,13)) years_month = list(["A", "B", "...

0  使用Pandas将对象(数值)转换为DateTime  ( Convert object numeric value to datetime using pandas ) 
我的数据具有时间表,如下所示,如何将其转换为使用Pandas 的日期和时间 ...

0  在Django管理员内联的Autofill FookeKey  ( Autofill foreignkey in django admin inline ) 
我有 Employee 内联显示 Company 。 Employee 属于 Company 和一个公司特定的 Department 。 我必须自动填充当前公司到新的部门表格。 #models.py class Company(models.Model): name = models.CharF...

1  如何用两组重新表达URL?  ( How to regex url with two groups ) 
我收到这个网址: private void playSound(String location) { try { Uri mp3 = Uri.parse("android.resource://" + getPackageName() + "/raw/" + l...

5  Python中的群集计算快速JSON序列化(和与泡块的比较)?  ( Fast json serialization and comparison with pickle for cluster computing in py ) 
我有一组数据点,每个数据点由字典描述。每个数据点的处理是独立的,我将每个数据作为单独作业提交给群集。每个数据点都有一个唯一的名称,我的群集提交包装器只需调用脚本,该脚本采用数据点的名称和描述所有数据点的文件。然后,该脚本从文件中访问数据点并执行计算。 由于每个作业必须加载所有点的集合,只能检索要运行的点,我想通过序列...

0  Boketh Plot隐藏HTML网站并仅在Jupyter中显示输出?  ( Boketh plot hide html site and show output only in jupyter ) 
使用散景包,我创建了一个图形可视化,并使用 WaitForMultipleObjects(...)2 输出显示在jupyter中,但也同时使用输出打开浏览器中的新选项卡。我只想将它绘制在Jupyter单元格中,而不将绘图打开作为新的HTML文件。这是不可分割的吗? WaitForMultipleObjects(....




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.