小编Ale*_*reS的帖子

python:什么是以灵活的方式处理深层嵌套数据的有效技术?

我的问题不是关于特定的代码片段,而是更一般的,所以请耐心等待:

我应该如何组织我正在分析的数据,以及我应该使用哪些工具来管理它?

我正在使用python和numpy来分析数据.因为python文档表明字典在python中非常优化,并且由于数据本身非常结构化的事实,我将它存储在深度嵌套的字典中.

这是字典的框架:层次结构中的位置定义元素的性质,每个新行定义先前级别中键的内容:

[AS091209M02] [AS091209M01] [AS090901M06] ... 
[100113] [100211] [100128] [100121] 
[R16] [R17] [R03] [R15] [R05] [R04] [R07] ... 
[1263399103] ... 
[ImageSize] [FilePath] [Trials] [Depth] [Frames] [Responses] ... 
[N01] [N04] ... 
[Sequential] [Randomized] 
[Ch1] [Ch2]
Run Code Online (Sandbox Code Playgroud)

编辑:为了更好地解释我的数据集:

[individual] ex: [AS091209M02]
[imaging session (date string)] ex: [100113]
[Region imaged] ex: [R16]
[timestamp of file] ex [1263399103]  
[properties of file] ex: [Responses]
[regions of interest in image ] ex [N01]
[format of data] ex [Sequential]
[channel of acquisition: this key indexes an …
Run Code Online (Sandbox Code Playgroud)

python dictionary nested

9
推荐指数
1
解决办法
3911
查看次数

如何在原始模式下访问sys.argv(或任何字符串变量)?

我在解析作为参数发送的文件路径时遇到困难:

如果我输入:

os.path.normpath('D:\Data2\090925')
Run Code Online (Sandbox Code Playgroud)

我明白了

'D:\\Data2\x0090925'
Run Code Online (Sandbox Code Playgroud)

显然文件夹名称中的\ 0正在扰乱格式化.我可以通过以下方式纠正它:

os.path.normpath(r'D:\Data2\090925')
Run Code Online (Sandbox Code Playgroud)

这使

'D:\\Data2\\090925'
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何使用sys.argv实现相同的结果?即:

os.path.normpath(sys.argv[1])
Run Code Online (Sandbox Code Playgroud)

我找不到一种方法,可以将原始模式下的sys.argv提供给os.path.normpath(),以避免文件夹从零开始出现问题!

此外,我知道我可以提供脚本python script.py D:/Data2/090925,它可以完美地工作,但不幸的是,Windows系统固执地为我提供'\',而不是'/',所以我真的需要解决这个问题,而不是避免它.

UPDATE1补充:如果我使用脚本test.py:

import os, sys 
if __name__ == '__main__': 
    print 'arg 1: ',sys.argv[1] 
    print 'arg 1 (normpath): ',os.path.normpath(sys.argv[1]) 
    print 'os.path.dirname :', os.path.dirname(os.path.normpath(sys.argv[1])) 
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

C:\Python>python test.py D:\Data2\091002\ 
arg 1: D:\Data2\091002\ 
arg 1 (normpath): D:\Data2\091002 
os.path.dirname : D:\Data2 
Run Code Online (Sandbox Code Playgroud)

即:我输了091002 ......

UPDATE2:正如下面的评论告诉我的那样,问题解决了我删除normpath时给出的例子:

import os, sys 
if __name__ == '__main__': 
    print 'arg 1: ',sys.argv[1] 
    print 'os.path.dirname :', os.path.dirname(sys.argv[1])
    print 'os.path.split(sys.argv[1])):', os.path.split(sys.argv[1])
Run Code Online (Sandbox Code Playgroud)

这使:

 C:\Python>python test.py D:\Data2\091002\ …
Run Code Online (Sandbox Code Playgroud)

python string-literals

1
推荐指数
1
解决办法
2970
查看次数

标签 统计

python ×2

dictionary ×1

nested ×1

string-literals ×1