2 calelin calelin 于 2017.09.01 11:42 提问

linux小白求助:如何编写python程序模拟linux的cat命令?题目具体如下。

%​ ​cat​ ​in
this​ ​is​ ​the​ ​contents​ ​of​ ​in
%​ ​cat​ ​test
this​ ​is​ ​the​ ​contents​ ​of​ ​test
%​ ​python3​ ​cat.py​ ​“in”​ ​“test”
this​ ​is​ ​the​ ​contents​ ​of​ ​in
this​ ​is​ ​the​ ​contents​ ​of​ ​test
需要编写的是cat.py程序,程序是在命令行运行的

2个回答

weixin_39195527
weixin_39195527   2017.09.01 14:05
已采纳

首先我们先认识一下cat指令的主要功能,如果不加任何参数,cat $file, 就是将文件内容输出到标准输出。

如果我们所要写的python脚本就是为了实现这一功能,那么就很好办了,以下是样例代码:

import re
import sys
import os

def main():
    """
    """
    file_list = sys.argv[1:]
    for file_name in file_list:
        if os.path.exists(file_name):
            with open(file_name) as file_obj:
                print file_obj.read()
        else:
            print "File %s doesn't exist!" % file_name

if __name__ == "__main__":
    reload(sys)
    sys.setdefaultencoding("utf-8")
    main()

weixin_39195527
weixin_39195527 回复calelin: linux 下的wc命令其实就是数行, 你可以定义一个变量,按行
10 个月之前 回复
calelin
calelin linux小白一枚,同时python也不了解,还望指教
11 个月之前 回复
calelin
calelin 您好,可否麻烦您再看一下如何用python模拟linux的wc命令:(以下是输入和输出) %​ ​cat​ ​in back​ ​then a​ ​cow came​ ​to​ ​me %​ ​python3​ ​wc.py​ ​ ​in 3​ ​7​ ​24 %​ ​python3​ ​wc.py​ ​ ​-w​ ​in 7 %​ ​python3​ ​wc.py​ ​ ​-n​ ​in 3 %​ ​python3​ ​wc.py​ ​ ​-b​ ​in 24
11 个月之前 回复
weixin_39195527
weixin_39195527   2017.09.11 10:34

linux 下wc 模拟

import re
import sys
import os

def main():
    """
    """
    file_list = sys.argv[1:]
    for file_name in file_list:
        count = 0
        if os.path.exists(file_name):
            with open(file_name) as file_obj:
                for line in file_obj:
                    count += 1
            print "File %s has %d line" % (file_name, count)
        else:
            print "File %s doesn't exist!" % file_name

if __name__ == "__main__":
    reload(sys)
    sys.setdefaultencoding("utf-8")
    main()
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言模拟Linux中的cat程序
几乎可以肯定80%的程序员都用过cat程序,它是Linux中用来连接多个文件的命令,自己模拟写这样一个小程序,将会是一次不错的学习,Cat支持有参数和无参数两种方式, 如果没有参数,将使用标准输入和输出实现,如果有参数将会把参数里指定的文件链接并在标准显示上显示,那么我第一步是做什么呢?当然是实现从一个指定的输入流读取字符 显示在指定的输出流上,代码大致如下: //从src中复制内容到d
模拟linux的 cat命令 读取文件
假设我们写一个 god_more.c,来模拟 cat命令读取testfile这个文件#include <stdio.h> int main(int argc,char *argv[]) { FIFLE *fp = fopen("testfile","r"); char chs[100]; fgets(chs,100,fp); while(!feof(fp)){
Python:模拟linux命令cat
模拟linux的cat命令,打印从命令行输入的文件名 #!/usr/bin/python #Filename:cat.py helpString = '''\ This program prints files to the standard output. Any number of files can be specified. Options include: --version : P
用C语言实现Linux命令的cat功能
#include void file_copy(FILE * file1,FILE * file2) { int c; while((c = getc(file1)) != EOF) { putc(c,file2); } } int main(int argc,char *argv[]) { //声明一个文件指针 FILE * fp; if(argc == 1) fil
实现一个简单类似linux上cat命令的功能函数
/*  *   写一个能查看其他文件的功能  *       cat  */ #include         /* * 写一个能查看其他文件的功能 * cat */ #include #define LINELEN 256 int main(int ac,char **av) { int fd = -1 ; //文件描述
使用C语言简单模拟Linux的cat程序
先给出源码//fileio.c #include<stdio.h> #include<stdlib.h> #include<fcntl.h> void print(int fd) { int i,len; char buf[10]; len=read(fd,buf,10);//每read一次,文件偏移量就会偏移10个字节位置 while(len>0)//循环打印,直至
linux下C实现cat命令
#include #include #include #include #include #include #include int cats(const char *filename); void print(const char *filename, struct stat *st); void mode_to_letters(int mode, char
通过管道和重定向实现linux管道命令
下午查看了自己当初写的一个有关管道的一个题目,这个题目是带领3+1学习管道通信时写的。题目要求如下:    题目2:通过管道模拟shell命令:cat file | sort    涉及主要知识点:未命名管道、重定向    题目描述:具体模拟一个shell命令:cat file | sort。具体的一些提示在后面。    提示:首先在当前目录下创建一个名为”file”的文件,里面的内容输入如下:9
Linux C实现简单的shell
Linux C下实现简单的Shell 宗旨:技术的学习是有限的,分享的精神的无限的。 【需求描述】 用各种C函数实现一个简单的交互式Shell: 1、给出提示符,让用户输入一行命令,识别程序名和参数并调用适当的exec函数执行程序,待执行完成后再次给出提示符。 2、识别和处理以下符号:简单的标准输入输出重定向( 和>),先dup2然后exec。管道(|): She
linux中cat命令的自定义实现
#include &amp;lt;stdio.h&amp;gt;int main(int agrc, char * argv[]) {    FILE *fp = NULL;    fp = fopen(argv[1], &quot;r&quot;);    if(fp == NULL) {        perror(&quot;fopen&quot;);        return  -1;    }     char ch;    while(1...