如何读取当前目录的文件列表并且写入数组[已解决]3楼正解
发表于 : 2010-05-01 11:58
我想写一个功能,和这个py实现的一样(这段代码是用来写自动变幻的背景的,但是不知道为什么,我无法成功执行这段代码提示如此: 没有那个文件或目录)
我已经查到声明一个数组的方法#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Name: slidexml.py
# Author: EthanZ6174
# Email: <[email protected]>
# Site: http://www.noslog.com
# Licence: GPLv3
# Version: 091127
import glob, os
import shutil
import time
curdir = os.getcwd()
os.chdir(curdir)
currentFilelist = glob.glob('*.*')
currentImageFiles = glob.glob('*.jpg')
currentTime = time.localtime()
length = len(currentImageFiles)
for i in currentFilelist:
if i == 'backgroundslide.xml':
os.remove(i)
f = file('backgroundslide.xml', 'w')
f.write('<background>\n')
f.write('\t<starttime>\n')
f.write('\t\t<year>' + str(currentTime.tm_year) + '</year>\n')
f.write('\t\t<month>' + str(currentTime.tm_mon) + '</month>\n')
f.write('\t\t<day>' + str(currentTime.tm_mday) + '</day>\n')
f.write('\t\t<hour>' + str(currentTime.tm_hour) + '</hour>\n')
f.write('\t\t<minute>' + str(currentTime.tm_min) + '</minute>\n')
f.write('\t\t<second>' + str(currentTime.tm_sec) + '</second>\n')
f.write('\t</starttime>\n')
f.write('<!--This animation will start at the time it created-->\n')
for i in currentImageFiles:
length = length - 1
f.write('\t<static>\n')
f.write('\t\t<duration>595.0</duration>\n')
f.write('\t\t<file>' + curdir + '/' + currentImageFiles[length] +'</file>\n')
f.write('\t</static>\n')
if length >= 1:
f.write('\t<transition>\n')
f.write('\t\t<duration>5.0</duration>\n')
f.write('\t\t<from>' + curdir + '/' + currentImageFiles[length] + '</from>\n')
f.write('\t\t<to>' + curdir + '/' + currentFilelist[length - 1] + '</to>\n')
f.write('\t</transition>\n')
f.write('</background>\n')
f.close()
但是我不知道怎么读取当前目录的文件并且写入数组。希望高人指点一下。shell是支持数组使用的,目前只能支持一维数组,但参数个数没有限制。
1、申明一个数组
declare -a array
其实不用申明,按数组方式直接赋值给变量即可,bash 就知道那是数组
2、数组赋值
a)array=( var1 var2 var3 ... varN )
b)array=( [0]=var1 [1]=var2 [2]=var3 ... [n]=varN )
c)array[0]=var1 array[1]=var2 array[3]=var3 ... array[n]=varN
3、引用数组
echo ${ array[n] }
n为数组的序号,从0开始
4、计算数组元素个数
${ #array[@] } 或者 ${ #array[*] }
bash的特殊参数 @ 和 * 都表示“扩展位置参数,从1开始”,但形式上稍有差异,但在数组里使用好像是可以通用的。
5、遍历数组
方法一:for循环
for var in ${ array[@] };
do
echo $var
done