hadoop mapreduce中的文件并发操作

时间:2024-03-08 03:36:00 作者:猪八戒来 综合材料 收藏本文 下载本文

【导语】“猪八戒来”通过精心收集,向本站投稿了8篇hadoop mapreduce中的文件并发操作,下面是小编为大家整理后的hadoop mapreduce中的文件并发操作,仅供参考,喜欢可以收藏与分享哟!

篇1:hadoop mapreduce中的文件并发操作

作者: 字体:[增加 减小] 类型:转载

hadoop mapreduce最主要的应用是基于键值对的数据的运算,过滤,提取,但除此之外,我们可以顺带利用mapreduce高并发的特性做一些用常用方法难以处理的问题,比如大量数据,大量文件的并发读写

这样的操作在map端或者reduce端均可。下面以一个实际业务场景中的例子来简要说明。

问题简要描述:

假如reduce输入的key是Text(String),value是BytesWritable(byte[]),不同key的种类为100万个,value的大小平均为30k左右,每个key大概对应 100个value,要求对每一个key建立两个文件,一个用来不断添加value中的二进制数据,一个用来记录各个value在文件中的位置索引。(大量的小文件会影响HDFS的性能,所以最好对这些小文件进行拼接)

当文件数量较小时,可以考虑使用MultipleOutput来进行key-value的分流,可以按照key的不同,将其输出到不同的文件或者目录中。但是reduce的数量只能为1,不然每个reduce都会生成相同的目录或者文件,不能达到最终的目的。此外最重要的是,操作系统对每个进程打开的文件数量的限制,默认为1024,集群的各个datanode可能会配置更高的值,但最多在几万左右,仍然是一个限制因素。不能满足百万文件的需求。

reduce的主要目的是用来归并key-value并输出到HDFS上,我们当然也可以在reduce中进行其他的操作,比如文件读写。因为默认的partitioner保证同一个key的数据肯定会在同一个reduce中,所以在每个reduce中只用打开两个文件进行读写即可(一个索引文件,一个数据文件)。并发度由reduce数量决定,将reduce数量设为256,那我们就可以同时处理256个key的数据(partioner保证了不同reduce处理的key不同,不会引起文件读写冲突)。这样的并发度的效率是很客观的,可以在较短的时间内完成需求。

思路是这样,但同时由于hdfs的特性以及hadoop的任务调度,在文件读写过程中,仍有可能会出现很多问题,下面简要说些一些常见的会碰到的问题。

1.org.apache.hadoop.hdfs.protocol.AlreadyBeingCreatedException异常

这可能是最经常碰到的一个问题。可能的原因如下:

(1)文件流冲突。

一般创建文件时都会打开一个供写入的文件流。而我们希望是追加,所以如果使用了错误的API ,就有可能引起上述问题。以FileSystem类为例,如果使用create方法之后再调用append()方法,就会抛出上述异常。所以最好使用createNewFile方法,只创建文件,不打开流。

(2)mapreduce推测执行机制

mapreduce 为了提高效率,会在一个任务启动之后,同时启动一些相同的任务(attempt),其中有一个attempt成功完成之后,视为整个task完成,其结果 作为最终结果,并且杀掉那些较慢的attempt,

集群一般会开启此选项以优化性能(以空间换时间)。但在本问题环境下推测执行却不太合适。因为我们一般希望一个task 用来处理一个文件,但如果启动推测执行,会有几个attempt同时试图操作同一个文件,就会引发异常。所以最好关掉此选项,将 mapred.reduce.max.attempts 设为1,或者将mapred.reduce.tasks.speculative.execution设为false.

但此时仍有可能会出现问题。因为如果一个task的唯一attempt出现问题,在被kill掉之后,task仍会另起一个attempt,此时因为前一个attempt异常终止,仍有可能会影响到新起的attempt的文件操作,引发异常。所以最安全的方法是,借鉴推测执行的机制(每个attempt各自生成自己的结果,最终选择一个作为最终结果),以每个attempt的id号为后缀附加到所操作的文件上,同时捕获所有文件操作的异常并处理,这样可避免文件的读写冲突。Context可以用来获取运行时的一些上下文信息,可以很容易得到attempt的id号。注意,此时如果开启推测执行也可以,但是会生成很多相同的文件(每个attempt一份),仍然不是最好的解决方法。

同时,我们可以利用reduce的输出来记录运行“不正常的” key.这些task大多数是attempt_0被杀掉而重启了一个attempt_1,所以下面的文件一般为两份。可以对这些情况的key输出(文件异常或者attemptID >0),并进行一些后续处理,比如文件重命名,或者紧对这些key重新写入。因为此种情况的key一般只占极少数,所以并不影响总体的效率。

2.文件异常处理

最好能将mapreduce中的所有文件操作都设置好异常处理。不然一个文件异常就有可能会使整个job失败。所以从效率来讲,最好是在文件发生异常时将其key作为reduce的输出以进行记录。因为同时mapreduce会重启一个task attempts重新进行文件读写,可保证我们得到最终的数据,最后所需的只是对那些异常的key进行一些简单的文件重命名操作即可。

3.多目录以及文件拼接

如果我们将key的种类设为1000万,上述方法会生成太多的小文件从而影响hdfs的性能,另外,因为所有文件都在同一个目录下,会导致同一个目录下文件数目过多而影响访问效率。

在创建文件的同时建立多个子目录,一个有用的方法是以reduce的taskid来建立子目录。这样有多少个reduce就可以建立多少个子目录,不会有文件冲突。同一个reduce处理的key都会在同一个目录下。

文件拼接要考虑的一个索引的问题。为了将文件索引建立的尽量简单,应该尽量保证同一个key的所有数据都在同一个大文件中。这可以利用key的hashCode来实现。如果我们想在每个目录下建立1000个文件,只需将hashCode对1000取余即可。

篇2:python中os操作文件及文件路径实例

这篇文章主要介绍了python中os操作文件及文件路径,实例汇总了针对文件的各种常用操作技巧,非常具有实用价值,需要的朋友可以参考下

python获取文件上一级目录:取文件所在目录的上一级目录

代码如下:

os.path.abspath(os.path.join(os.path.dirname(‘settings.py‘),os.path.pardir))

os.path.pardir是父目录,os.path.abspath是绝对路径

举例具体看一下输出:

代码如下:

print os.path.dirname(os.path.abspath(“__file__”))

print os.path.pardir

print os.path.join(os.path.dirname(“__file__”),os.path.pardir)

print os.path.abspath(os.path.join(os.path.dirname(“__file__”),os.path.pardir))

输出结果:

G:\\work\\python

..                     #这是两个点“..”,也就是上级目录的表示方法

..

G:\\work

获取文件当前路径:

代码如下:

os.path.dirname(os.path.abspath(‘__file__‘))

python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。

得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()

返回指定目录下的所有文件和目录名:os.listdir()

函数用来删除一个文件:os.remove()

删除多个目录:os.removedirs(r“c:\\python”)

检验给出的路径是否是一个文件:os.path.isfile()

检验给出的路径是否是一个目录:os.path.isdir()

判断是否是绝对路径:os.path.isabs()

检验给出的路径是否真地存:os.path.exists()

返回一个路径的目录名和文件名:os.path.split() eg os.path.split(‘/home/swaroop/byte/code/poem.txt‘) 结果:(‘/home/swaroop/byte/code‘, ‘poem.txt‘)

分离扩展名:os.path.splitext()

获取路径名:os.path.dirname()

获取文件名:os.path.basename()

运行shell命令: os.system()

读取和设置环境变量:os.getenv() 与os.putenv()

给出当前平台使用的行终止符:os.linesep Windows使用‘\\r\\n‘,Linux使用‘\\n‘而Mac使用‘\\r‘

指示你正在使用的平台:os.name 对于Windows,它是‘nt‘,而对于Linux/Unix用户,它是‘posix‘

重命名:os.rename(old, new)

创建多级目录:os.makedirs(r“c:\\python\\test”)

创建单个目录:os.mkdir(“test”)

获取文件属性:os.stat(file)

修改文件权限与时间戳:os.chmod(file)

终止当前进程:os.exit

获取文件大小:os.path.getsize(filename)

目录操作:

os.mkdir(“file”) 创建目录

复制文件:

shutil.copyfile(“oldfile”,“newfile”) oldfile和newfile都只能是文件

shutil.copy(“oldfile”,“newfile”) oldfile只能是文件夹,newfile可以是文件,也可以是目标目录

复制文件夹:

shutil.copytree(“olddir”,“newdir”) olddir和newdir都只能是目录,且newdir必须不存在

重命名文件(目录)

os.rename(“oldname”,“newname”) 文件或目录都是使用这条命令

移动文件(目录)

shutil.move(“oldpos”,“newpos”)

删除文件

os.remove(“file”)

删除目录

os.rmdir(“dir”)只能删除空目录

shutil.rmtree(“dir”) 空目录、有内容的目录都可以删

转换目录

os.chdir(“path”) 换路径

pyhton文件操作函数:

os.mknod(“test.txt”) 创建空文件

fp = open(“test.txt”,w) 直接打开一个文件,如果文件不存在则创建文件

关于open 模式:

w 以写方式打开,

a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)

r+ 以读写模式打开

w+ 以读写模式打开 (参见 w )

a+ 以读写模式打开 (参见 a )

rb 以二进制读模式打开

wb 以二进制写模式打开 (参见 w )

ab 以二进制追加模式打开 (参见 a )

rb+ 以二进制读写模式打开 (参见 r+ )

wb+ 以二进制读写模式打开 (参见 w+ )

ab+ 以二进制读写模式打开 (参见 a+ )

fp.read([size]) #size为读取的长度,以byte为单位

fp.readline([size]) #读一行,如果定义了size,有可能返回的只是一行的一部分

fp.readlines([size]) #把文件每一行作为一个list的一个成员,并返回这个list,

其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。

fp.write(str) #把str写到文件中,write()并不会在str后加上一个换行符

fp.writelines(seq) #把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。

fp.close() #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。 如果一个文件在关闭后还对其进行操作会产生ValueError

fp.flush() #把缓冲区的内容写入硬盘

fp.fileno() #返回一个长整型的”文件标签“

fp.isatty() #文件是否是一个终端设备文件(unix系统中的)

fp.tell() #返回文件操作标记的当前位置,以文件的开头为原点

fp.next() #返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。

fp.seek(offset[,whence]) #将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。

fp.truncate([size]) #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。

相关例子

1 将文件夹下所有图片名称加上‘_fc‘

python代码:

代码如下:

# -*- coding:utf-8 -*-

import re

import os

import time

#str.split(string)分割字符串

#‘连接符‘.join(list) 将列表组成字符串

def change_name(path):

global i

if not os.path.isdir(path) and not os.path.isfile(path):

return False

if os.path.isfile(path):

file_path = os.path.split(path) #分割出目录与文件

lists = file_path[1].split(‘.‘) #分割出文件与文件扩展名

file_ext = lists[-1] #取出后缀名(列表切片操作)

img_ext = [‘bmp‘,‘jpeg‘,‘gif‘,‘psd‘,‘png‘,‘jpg‘]

if file_ext in img_ext:

os.rename(path,file_path[0]+‘/‘+lists[0]+‘_fc.‘+file_ext)

i+=1 #注意这里的i是一个陷阱

#或者

#img_ext = ‘bmp|jpeg|gif|psd|png|jpg‘

#if file_ext in img_ext:

# print(‘ok---‘+file_ext)

elif os.path.isdir(path):

for x in os.listdir(path):

change_name(os.path.join(path,x)) #os.path.join()在路径处理上很有用

img_dir = ‘D:\\\\xx\\\\xx\\\\images‘

img_dir = img_dir.replace(‘\\\\‘,‘/‘)

start = time.time()

i = 0

change_name(img_dir)

c = time.time() - start

print(‘程序运行耗时:%0.2f‘%(c))

print(‘总共处理了 %s 张图片‘%(i))

输出结果:

程序运行耗时:0.11

总共处理了 109 张图片

希望本文所述对大家的Python程序设计有所帮助。

篇3:Linux VPS中文件与文件夹操作命令 linux操作系统

在linux中对于文件与文件夹操作命令有很多,如cat、chgrp、xgnod、chown、clear、cmp、cp、cut、 diff、du、emacs、fmkdir、mikdir、more、grep、file、fmc、grep、head、ln、less、ocate、ls、mv、pico、pwd、rm如下图所示,

文件及目录操作:

进入某目录:cd /目录名

返回上级目录:cd ..

返回上上级目录:cd ../..

删除文件: rm 文件名

删除目录:rmdir 目录名

移动或重命名文件:mv 旧路径 新路径

复制文件:cp 源文件路径 复制到的新文件路径

查找文件:find 文件名

查看目录内文件:ls 目录名

更改site文件夹目录所有者

chown -R www site

文件解压操作

tar.gz压缩与解压

解压filename.tar.gz

tar zxvf filename.tar.gz

解压filename.tar.gz到site目录

tar zxvf filename.tar.gz site

压缩site目录为filename.tar.gz

tar -zcvf filename.tar.gz site

压缩多个目录(site1 site2)为filename.tar.gz

tar -zcvf filename.tar.gz site site1 site2

zip压缩与解压

解压filename.zip

unzip filename.zip

解压filename.zip到site目录

unzip filename.zip site

删除操作

创建权限为755的demo文件夹

mkdir 755 demo

-r 就是向下递归,不管有多少级目录,一并删除

-f 就是直接强行删除,不作任何提示的意思

Llinux没有回收站,使用rm -rf的时候一定要格外小心

删除/home/site/文件夹(该目录以及其下所有文件、文件夹)

rm -rf /home/site/

删除filename.tar.gz文件

rm -f filename.tar.gz

这里介绍Linux下统计目录/文件夹大小的命令:du

如果想查看当前目录下,各个子目录的大小:

du -sh ./*

得到如下回显:

root@vm:/var# du -sh ./*

424K ./backups

8.2M ./cache

50M ./lib

4.0K ./local

8.0K ./lock

14M ./log

4.0K ./mail

4.0K ./opt

96K ./run

60K ./spool

4.0K ./tmp

8.0K ./www

上述结果表明lib目录占用了50M的磁盘空间,其次是log目录,占用了14M空间;

如果磁盘有多个分区,想查看每个分区的使用情况,则使用df命令:

df -hl

得到如下显示:

/dev/sda1 16G 662M 15G 5% /

tmpfs 252M 0 252M 0% /lib/init/rw

udev 247M 124K 247M 1% /dev

tmpfs 252M 0 252M 0% /dev/shm

说明sda1磁盘一共15G,使用了662M,只用了5%

再附一些函数

文件和目录操作的基本

命令有:cat、chgrp、xgnod、c

hown、clear、cmp、cp、cut、

diff、du、emacs、f

mkdir、mikdir、more、

grep、file、fmc、grep、h

ead、ln、less、locate、ls、

mv、pico、pwd、rm

、whatis、whereis

、sort、stat、strings、t

ail、touchy umask、umq、vi、wc

篇4:在Python中使用next方法操作文件的教程

这篇文章主要介绍了在Python中使用next方法操作文件的教程,是Python入门中的基础知识,需要的朋友可以参考下

next()方法当一个文件被用作迭代器,典型例子是在一个循环中被使用,next()方法被反复调用,此方法返回下一个输入行,或引发StopIteration异常EOF时被命中。

与其它文件的方法,如ReadLine()相结合next()方法工作不正常。然而,usingseek()将文件重新定位到一个绝对位置将刷新预读缓冲器。

语法

以下是next()方法的语法:

fileObject.next();

参数

NA

返回值

此方法返回下一个输入行,

例子

下面的示例演示next()方法的使用。

#!/usr/bin/python# Open a filefo = open(“foo.txt”, “rw+”)print “Name of the file: ”, fo.name# Assuming file has following 5 lines# This is 1st line# This is 2nd line# This is 3rd line# This is 4th line# This is 5th linefor index in range(5): line = fo.next() print “Line No %d - %s” % (index, line)# Close opend filefo.close()

当我们运行上面的程序,它会产生以下结果:

Name of the file: foo.txtLine No 0 - This is 1st lineLine No 1 - This is 2nd lineLine No 2 - This is 3rd lineLine No 3 - This is 4th lineLine No 4 - This is 5th line

篇5:linux中文件操作命令(创建、删除、查看、权限设置)linux操作系统

linux系统和windows系统一个可以创建文件,删除文件,查看文件内容及修改文件权限,下面我来给大家详细介绍介绍,有需要了解linux文件操作的朋友可参考,

创建文件(touch)命令

Linux 创建文件命令主要用到的是 touch 命令,touch 命令可用来修改文件的访问时间,修改时间,如果没有指定时间,则默认为当前时间,如果指定的文件不存在,则 touch 命令将创建该文件。

命令格式:

touch

[-acfm]

[-r file(参照文件)]

[-t decimtime(时间值)]

[-d time(时间值)]

[--time={atime,access,use,mtime,modify}]

[--date=time]

[--reference=file]

[--no-create] 不建立任何文件,与 -c 作用想用

[--help] 在线帮助

[--version] 显示版本信息

[--]

file(文件)...

-a 修改文件 file 的存取时间.

-c 不创建文件 file.

-m 修改文件 file

-r ref_file 将参照文件 ref_file 相应的时间戳记的数值作为指定文件 file 时间戳记的新值.

-t time 使用指定的时间值 time 作为指定文件 file 相应时间戳记的新值,格式可以是 MMDDhhmm 或者 yyyyMMDDhhmm

例如:

touch -t 10112200 abc 将 abc 文件的时间更改为当年的10月11号22点整

touch -t 200910112200 abc 将 abc 文件的时间更改为10月11日22点整

touch -r baidu.com abc 将 abc 文件的时间更改为和 baidu.com 文件的时间相同

touch abc 创建 abc 文件(文件时间默认为当前时间)

当然 Linux 创建文件的命令还有如:cp(拷贝文件) ,mv(移动文件) 也算是吧。

另外只要命令能够重定向输出到一个不存在的文件中去,那么该命令也能够创建文件,比如如下命令:

echo hello world >/home/abc 将字符串输出到 /home/abc 文件里面

cat baidu.com >/home/abc 将 baidu.com 文件里面的内容输出到 /home/abc 文件里面

less testless >/home/abc

tail -f -n 20 /home/abc >/home/abc

linux删除文件,文件夹命令rm

Linux删除文件,文件夹主要用的命令是 rm ,下面将对 linux rm 命令做一个简单的介绍。

语法:

rm [选项] DirName

该命令中的[选项]常用的有以下几种:

-i 删除前逐一询问确认

-f 即使被删除的文件的属性是只读,也直接删除,无需逐一确认,默认是需要逐一确认的。

-r 将目录及以下所有的文件都逐一删除

示例:

rm -i *.php 删除所有后缀为 php 的文档;删除前逐一询问确认

rm -r phpernote 将 phpernote 目录及子目录中所有文件都删除,当文件为只读时,会有提示操作是否删除

rm -rf /var/access 将会删除 /var/access 目录以及其下所有文件、文件夹,删除时不会有任何删除确认提示

注意:

(1)在linux没有回收站,所以在使用 rm 命令的时候,切记文件或目录被删除之后就无法再恢复了。

(2)如果提示没有权限运行该命令,可使用 sudo 提升用户的权限然后再执行命令

查看文件内容

在linux下面,有许多命令都可以查看文件的内容,各种命令都有着有不同的用法与特点,可以根据自己的需要选择相应的命令以快速高效的查看文件内容,下面就将linux下查看文件内容的命令做一下总结。

cat    由第一行开始显示内容,并将所有内容输出

tac    从最后一行倒序显示内容,并将所有内容输出

more   根据窗口大小,一页一页的现实文件内容

less   和more类似,但其优点可以往前翻页,而且进行可以搜索字符

head   只显示头几行

tail   只显示最后几行

nl     类似于cat -n,显示时输出行号

下面将各种命令的用法详细比较一下,如下:

1.cat 命令

cat语法:cat [-n] 文件名

参数说明:-n : 显示时,连行号一起输出

cat的功能是将文件从第一行开始连续的将内容输出在屏幕上,

但是cat并不常用,原因是当文件大,行数比较多时,屏幕无法全部容下时,只能看到一部分内容。

tac的功能是将文件从最后一行开始倒过来将内容数据输出到屏幕上。我们可以发现,tac实际上是cat反过来写。

2.tac 命令

tac语法:tac 文件名

这个命令输出的文件内容和cat输出的内容是完全倒过来的。一般没有变态需求很少用到。

3.more命令

more的语法:

more 文件名

more的功能是将文件从第一行开始,根据输出窗口的大小,适当的输出文件内容。当一页无法全部输出时,可以用“回车键”向下翻3行(我的环境是3行,其他linux版本可能不同),或者使用“空格键”向下翻页。退出查看页面,请按“q”键。这是一个比较常用的命令。

另外,more还可以配合管道符“|”(pipe)使用,例如:ls -al | more

4.less 命令

less的语法:

less 文件名

less的功能和more大同小异,但是使用more无法向前翻页,只能向后翻。less可以使用【pageup】和【pagedown】键进行前翻页和后翻页,这样看起来更方便。

另外,less还有一个功能,可以在文件中进行搜索你想找的内容,假设你想在passwd文件中查找有没有www.abc字符串,那么你可以这样来做:

[sylar@UB2 etc]# less passwd

然后输入:

/www.abc

回车

此时如果有www.abc字符串,linux会把该字符已高亮方式显示。

退出查看页面,请按“q”键。

5.head 命令

head的语法:

head 【-n number】 文件名

head通常在只需要读取文件的前几行或者后几行的情况下使用。

例如:

[sylar@UB2 etc]# head -n 5 error.log -- 只显示error.log文件的前5行内容

6.tail 命令

tail的语法:

tail [-n number] 文件名

tail的功能恰好和head相反,只显示最后几行内容,用法一样,这里就不举例了。

7.nl 命令

nl的语法:

nl 文件名

nl命令的功能和cat -n 是一样的,同样是从第一行输出全部内容,并且把行号显示出来。

chmod(文件或文件夹权限设定

Linux chmod 命令的作用是设置 Linux 系统上的文件或者文件夹(以下对两者统称为档案)的权限,下面对该命令的一些详细用法做一下说明。

命令格式:chmod [-cfvR] [--help] [--version] mode file...

mode 设置权限的字符串,参数格式如下:

[ugoa...][[+-=][rwxX]...][,...]

其中 u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者都是。

+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。

r 表示可读取,w 表示可写入,x(小写) 表示可执行,X(大写) 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

-c 若该档案权限确实已经更改,才显示其更改动作

-f 若该档案权限无法被更改也不要显示错误讯息。

-v 显示权限变更的详细资料

-R 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)

--help 显示辅助说明信息

--version 显示版本信息

下面使用案例说明:

系统中存在这样一个文件:/home/www/exam.sh

(1)将以上文件设置为所有人都可读:

chmod ugo+r /home/www/exam.sh

或者:

chmod a+r /home/www/exam.sh

(2)将以上文件与 另外一文件 /home/www/test.sh 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w /home/www/exam.sh /home/www/test.sh

(3)将以上文件设定为只有该档案拥有者才可以执行:

chmod u+x /home/www/exam.sh

(4)将当前目录下的所有档案与子档案设置为可被任何人读取:

chmod -R a+r *

另外需要注意的是也可以用数字来表示相应的权限,语法格式为:chmod abc file

其中a,b,c各代表一个数字,分别表示 User、Group、及 Other 的权限。

r=4(读取),w=2(写入),x=1(执行)

若要 rwx 属性则为:4+2+1=7

若要 rw- 属性则为:4+2=6

若要 r-x 属性则为:4+1=5

篇6:在Python中操作文件之seek方法的使用教程

这篇文章主要介绍了在Python中操作文件之seek方法的使用教程,是Python入门学习中的基础知识,需要的朋友可以参考下

seek()方法在偏移设定该文件的当前位置,参数是可选的,默认为0,这意味着绝对的文件定位,它的值如果是1,这意味着寻求相对于当前位置,2表示相对于文件的末尾。

没有返回值。需要注意的是,如果该文件被打开或者使用‘a‘或‘A+‘追加,任何seek()操作将在下次写撤消。

如果该文件只打开使用“a”的追加模式写,这种方法本质上是一个空操作,但读使能(模式‘a+‘),它仍然在追加模式打开的文件非常有用。

如果该文件在文本模式下使用“t”,只有tell()返回的偏移开都是合法的。使用其他偏移会导致不确定的行为。

请注意,并非所有的文件对象都是可搜索。

语法

以下是seek()方法的语法:

fileObject.seek(offset[, whence])

参数

offset -- 这是在文件中,读/写指针的位置,

whence -- 这是可选的,默认为0,这意味着绝对的文件定位,其它的值是1,这意味着寻求相对于当前位置,2表示相对于文件的末尾。

返回值

此方法不返回任何值。

例子

下面的例子显示了seek()方法的使用。

#!/usr/bin/python# Open a filefo = open(“foo.txt”, “rw+”)print “Name of the file: ”, fo.name# Assuming file has following 5 lines# This is 1st line# This is 2nd line# This is 3rd line# This is 4th line# This is 5th lineline = fo.readline()print “Read Line: %s” % (line)# Again set the pointer to the beginningfo.seek(0, 0)line = fo.readline()print “Read Line: %s” % (line)# Close opend filefo.close()

当我们运行上面的程序,它会产生以下结果:

Name of the file: foo.txtRead Line: This is 1st lineRead Line: This

篇7:在Python中操作文件之read方法的使用教程

这篇文章主要介绍了在Python中操作文件之read()方法的使用教程,是Python入门学习中的基础知识,需要的朋友可以参考下

read()方法读取文件size个字节大小,如果读取命中获得EOF大小字节之前,那么它只能读取可用的字节。

语法

以下是read()方法的语法:

fileObject.read( size );

参数

size -- 这是可以从文件中读取的字节数。

返回值

此方法返回读取字符串中的字节数,

例子

下面的例子显示了read()方法的使用。

#!/usr/bin/python# Open a filefo = open(“foo.txt”, “rw+”)print “Name of the file: ”, fo.name# Assuming file has following 5 lines# This is 1st line# This is 2nd line# This is 3rd line# This is 4th line# This is 5th lineline = fo.read(10)print “Read Line: %s” % (line)# Close opend filefo.close()

当我们运行上面的程序,它会产生以下结果:

Name of the file: foo.txtRead Line: This is 1s

篇8:在Python程序中操作文件之flush方法的使用教程

这篇文章主要介绍了在Python程序中操作文件之flush()方法的使用教程,是Python入门学习中的基础知识,需要的朋友可以参考下

flush()方法刷新内部缓冲区,像标准输入输出的fflush,这类似文件的对象,无操作。

Python关闭时自动刷新文件。但是可能要关闭任何文件之前刷新数据。

语法

以下是flush()方法的语法:

fileObject.flush();

参数

NA

返回值

此方法不返回任何值,

例子

下面的例子显示了flush()方法的使用。

#!/usr/bin/python# Open a filefo = open(“foo.txt”, “wb”)print “Name of the file: ”, fo.name# Here it does nothing, but you can call it with read operation.fo.flush()# Close opend filefo.close()

当我们运行上面的程序,它会产生以下结果:

Name of the file: foo.txt

防火墙的并发连接数

文件范本

文件范文

操作近义词

AUTOCAD中图案填充操作的技巧

Ubuntu中安装MongoDB及执行一些简单操作笔记

投标文件范本

文件管理制度

AT24C512中数据的文件系统化管理

局域网中共享文件无法访问的解决

hadoop mapreduce中的文件并发操作(共8篇)

欢迎下载DOC格式的hadoop mapreduce中的文件并发操作,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档