English 中文(简体)
灰色编码是一家名录,数据库档案是另一个目录。 • 如何开 d和开 process?
原标题:Python code is in one directory, database file is in another. How to open db and process?

我的档案有文件夹A。 My python代码从另一个地方开始。

在我管理以下法典时:

path =  xxx                     # path to file directory
filenames = os.listdir(path)    # list the directory file names
#pprint.pprint(filenames)       # print names
newest=max(filenames)
print newest                    # print most recent file name

# would like to open this file and write to it
data=shelve.open(newest, flag="w")

直到最后一行,我就有一个错误,即:打上了“n”或“c”国旗,以操作新的

Without the flag in the last line eg: data=shelve.open(newest), the file name arrives in the Python code s directory without any data in the db.

I need to be able to put the filename returned by newest in " ", but don t know how.

问题回答

。 由于目前的名录(由于该笔记本的目录缺席)与笔记不相同,你需要形成一条全面的道路。 http://docs.python.org/library/os.path.html#os.path.join“rel=“nofollow”>os.path.join:

data = shelve.open(os.path.join(path,newest), flag = "w") 

As Geoff Gerrietts points out, max(filenames) returns the filename that comes last in alphabetical order. Perhaps that does give you the file you desire. But if you want the file with the most recent modification time, then you could use

filenames = [os.path.join(path,name) for name in os.listdir(path)]
newest = max(filenames, key = os.path.getmtime)

请注意,如果你这样做的话,那么ne 西将是一个完整的路径名称,那么你就不需要os.path.join in the shelve. open line:

data = shelve.open(newest, flag = "w") 

由此,除使用全部路标外,还有改变现有航标:

os.chdir(path)

Although this looks simpler, it can also make your code harder to comprehend, since the reader has to keep track of what the current working directory is. Perhaps this is not hard if you only call os.chdir once, but in a complicated script, calling os.chdir in many places can make the code a bit spaghetti-like.

通过使用全方位的路径名称,你的工作是毫无疑问的。


If you wish to open each file:

import os
import contextlib

filenames = [os.path.join(path,name) for name in os.listdir(path)]
for filename in filenames:
    with contextlib.closing(shelve.open(filename, flag = "w")) as data:
        # do stuff with data
        # ...
        # data.close() will be called for you when Python leaves this with-block




相关问题
what is wrong with this mysql code

$db_user="root"; $db_host="localhost"; $db_password="root"; $db_name = "fayer"; $conn = mysqli_connect($db_host,$db_user,$db_password,$db_name) or die ("couldn t connect to server"); // perform query ...

Users asking for denormalized database

I am in the early stages of developing a database-driven system and the largest part of the system revolves around an inheritance type of relationship. There is a parent entity with about 10 columns ...

Easiest way to deal with sample data in Java web apps?

I m writing a Java web app in my free time to learn more about development. I m using the Stripes framework and eventually intend to use hibernate and MySQL For the moment, whilst creating the pages ...

join across databases with nhibernate

I am trying to join two tables that reside in two different databases. Every time, I try to join I get the following error: An association from the table xxx refers to an unmapped class. If the ...

How can I know if such value exists in database? (ADO.NET)

For example, I have a table, and there is a column named Tags . I want to know if value programming exists in this column. How can I do this in ADO.NET? I did this: OleDbCommand cmd = new ...

Convert date to string upon saving a doctrine record

I m trying to migrate one of my PHP projects to Doctrine. I ve never used it before so there are a few things I don t understand. In my current code, I have a class similar to this: class ...

热门标签