Bonjour à tous,

Je viens vers vous car j'ai un petit soucis sur un petit script. Cela fait un petit moment que j'ai pas codé un script en python et là je sèche.

Pour vous expliquer mon problème je vous explique ce que je fais.

Alors j'ai un fichier contenant des cartes GRID (fichier calcul Nastran pour les connaisseurs) et d'autres cartes divers. Mon script ne s'occupe que des cartes GRID et il a pour but de changer l'ID de la carte.

Voici un exemple de carte GRID :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
GRID     86725          8290.   1863.13 2003.55
Dans cet exmple l'ID c'est le 86725 et mon script le change comme il le faut.

Mon soucis intervient quand je tombe sur une ligne qui n'est pas une carte GRID et dans ce cas je demande à mon script de ré-écrire la ligne telle quelle.

Sauf que j'ai un soucis de saut de ligne que je n'arrive pas à comprendre.

Alors voici le fichier d'entré que j'utilise avec la ligne qui commence par CROD pour le test MPC_NODE.rar :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
GRID     86725          8290.   1863.13 2003.55                                 
GRID     86726          8290.   1842.13 2003.55                                 
GRID     86727          8290.   1821.13 2003.55                                 
GRID     86728          8290.   1800.13 2003.55                                 
GRID     86729          8288.   1750.   2003.55
CROD     10000                                 
GRID     86730          8288.   1726.   2003.55                                 
GRID     86731          8288.   1689.   2003.55                                 
GRID     86732          8288.   1665.5  2003.55                                 
GRID     86733          8288.   1642.   2003.55                                 
GRID     86734          8288.   1617.9  2003.55                                 
GRID     86735          8288.   1593.8  2003.55                                 
GRID     86736          8288.   1569.7  2003.55                                 
GRID     86737          8288.   1545.6  2003.55                                 
GRID     86738          8288.   1521.5  2003.55                                 
GRID     86739          8288.   1498.   2003.55                                 
GRID     86740          8288.   1474.5  2003.55                                 
GRID     86741          8288.   1437.5  2003.55                                 
GRID     86742          8288.   1414.   2003.55                                 
GRID     86743          8288.   1390.5  2003.55                                 
GRID     86744          8288.   1369.4  2003.55                                 
GRID     86745          8288.   1348.3  2003.55                                 
GRID     86746          8288.   1327.2  2003.55                                 
GRID     86747          8288.   1306.1  2003.55                                 
GRID     86748          8288.   1285.   2003.55                                 
GRID     86749          8288.   1261.5  2003.55                                 
GRID     86750          8288.   1238.   2003.55                                 
GRID     86751          8288.   1201.   2003.55                                 
GRID     86752          8288.   1177.5  2003.55                                 
GRID     86753          8288.   1154.   2003.55                                 
GRID     86754          8288.   1131.42 2003.55                                 
GRID     86755          8288.   1108.83 2003.55                                 
GRID     86756          8288.   1086.25 2003.55                                 
GRID     86757          8288.   1063.67 2003.55                                 
GRID     86758          8288.   1041.08 2003.55                                 
GRID     86759          8288.   1018.5  2003.55                                 
GRID     86760          8288.   995.    2003.55                                 
GRID     86761          8288.   971.5   2003.55                                 
GRID     86762          8290.   934.5   2003.55                                 
GRID     86763          8290.   903.017 2005.55                                 
GRID     86764          8290.   881.443 2005.55                                 
GRID     86765          8290.   859.869 2006.55                                 
GRID     86766          8290.   838.295 2006.55                                 
GRID     86767          8290.   816.722 2007.55
et voici le résultat que j'obtiens :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
GRID    99900000        8290.   1863.13 2003.55                         
GRID    99900001        8290.   1842.13 2003.55                         
GRID    99900002        8290.   1821.13 2003.55                         
GRID    99900003        8290.   1800.13 2003.55                         
GRID    99900004        8288.   1750.   2003.55
 
CROD     10000                                 
 
GRID    99900005        8288.   1726.   2003.55                         
GRID    99900006        8288.   1689.   2003.55                         
GRID    99900007        8288.   1665.5  2003.55                         
GRID    99900008        8288.   1642.   2003.55                         
GRID    99900009        8288.   1617.9  2003.55                         
GRID    99900010        8288.   1593.8  2003.55                         
GRID    99900011        8288.   1569.7  2003.55                         
GRID    99900012        8288.   1545.6  2003.55                         
GRID    99900013        8288.   1521.5  2003.55                         
GRID    99900014        8288.   1498.   2003.55                         
GRID    99900015        8288.   1474.5  2003.55                         
GRID    99900016        8288.   1437.5  2003.55                         
GRID    99900017        8288.   1414.   2003.55                         
GRID    99900018        8288.   1390.5  2003.55                         
GRID    99900019        8288.   1369.4  2003.55                         
GRID    99900020        8288.   1348.3  2003.55                         
GRID    99900021        8288.   1327.2  2003.55                         
GRID    99900022        8288.   1306.1  2003.55                         
GRID    99900023        8288.   1285.   2003.55                         
GRID    99900024        8288.   1261.5  2003.55                         
GRID    99900025        8288.   1238.   2003.55                         
GRID    99900026        8288.   1201.   2003.55                         
GRID    99900027        8288.   1177.5  2003.55                         
GRID    99900028        8288.   1154.   2003.55                         
GRID    99900029        8288.   1131.42 2003.55                         
GRID    99900030        8288.   1108.83 2003.55                         
GRID    99900031        8288.   1086.25 2003.55                         
GRID    99900032        8288.   1063.67 2003.55                         
GRID    99900033        8288.   1041.08 2003.55                         
GRID    99900034        8288.   1018.5  2003.55                         
GRID    99900035        8288.   995.    2003.55                         
GRID    99900036        8288.   971.5   2003.55                         
GRID    99900037        8290.   934.5   2003.55                         
GRID    99900038        8290.   903.017 2005.55                         
GRID    99900039        8290.   881.443 2005.55                         
GRID    99900040        8290.   859.869 2006.55                         
GRID    99900041        8290.   838.295 2006.55                         
GRID    99900042        8290.   816.722 2007.55
Comme vous voyez le changement d'ID se passe correctement mais les deux sauts de lignes; aux lignes 7 et 9 me pose problème je ne souhaite pas les avoir et je ne comprend pas pourquoi ils y sont.

Je souhaite obtenir ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
GRID    99900000        8290.   1863.13 2003.55                         
GRID    99900001        8290.   1842.13 2003.55                         
GRID    99900002        8290.   1821.13 2003.55                         
GRID    99900003        8290.   1800.13 2003.55                         
GRID    99900004        8288.   1750.   2003.55                        
CROD     10000                                 
GRID    99900005        8288.   1726.   2003.55                         
GRID    99900006        8288.   1689.   2003.55                         
GRID    99900007        8288.   1665.5  2003.55                         
GRID    99900008        8288.   1642.   2003.55                         
GRID    99900009        8288.   1617.9  2003.55                         
GRID    99900010        8288.   1593.8  2003.55                         
GRID    99900011        8288.   1569.7  2003.55                         
GRID    99900012        8288.   1545.6  2003.55                         
GRID    99900013        8288.   1521.5  2003.55                         
GRID    99900014        8288.   1498.   2003.55                         
GRID    99900015        8288.   1474.5  2003.55                         
GRID    99900016        8288.   1437.5  2003.55                         
GRID    99900017        8288.   1414.   2003.55                         
GRID    99900018        8288.   1390.5  2003.55                         
GRID    99900019        8288.   1369.4  2003.55                         
GRID    99900020        8288.   1348.3  2003.55                         
GRID    99900021        8288.   1327.2  2003.55                         
GRID    99900022        8288.   1306.1  2003.55                         
GRID    99900023        8288.   1285.   2003.55                         
GRID    99900024        8288.   1261.5  2003.55                         
GRID    99900025        8288.   1238.   2003.55                         
GRID    99900026        8288.   1201.   2003.55                         
GRID    99900027        8288.   1177.5  2003.55                         
GRID    99900028        8288.   1154.   2003.55                         
GRID    99900029        8288.   1131.42 2003.55                         
GRID    99900030        8288.   1108.83 2003.55                         
GRID    99900031        8288.   1086.25 2003.55                         
GRID    99900032        8288.   1063.67 2003.55                         
GRID    99900033        8288.   1041.08 2003.55                         
GRID    99900034        8288.   1018.5  2003.55                         
GRID    99900035        8288.   995.    2003.55                         
GRID    99900036        8288.   971.5   2003.55                         
GRID    99900037        8290.   934.5   2003.55                         
GRID    99900038        8290.   903.017 2005.55                         
GRID    99900039        8290.   881.443 2005.55                         
GRID    99900040        8290.   859.869 2006.55                         
GRID    99900041        8290.   838.295 2006.55                         
GRID    99900042        8290.   816.722 2007.55
Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 
########################################################################################
"""
                            DUPLICATE NODE FOR NASTRAN BULK v1.0
                                     ----------
                                  14 February 2016
****************************************************************************************
 
[+] INPUT :
- NODE_FILE      : File contains the original GRID card that the user wants duplicate.
 
[+] OUTPUT :
- DUPLICATE_NODE : Output file contains the duplicate GRID cards.
 
[+] VARIBALE :
 
- FORMAT : Format for the bulk file :
                                   - 8 for small format
                                   - 16 for large format
 
- N_ID : New ID for the GRID card duplicate. The width of the N_ID can not be larger
       than the FORMAT chose. Must be an integer > 0.
 
- STEP : Increments the next ID for the duplicate GRID card ID. Must be an integer > 0. 
 
"""
########################################################################################
 
def Duplicate_Node(Bulk_Node, Bulk_Node_Duplicate):
 
    FORMAT = 8
    N_ID   = 99900000
    STEP   = 1
 
    for LINE in Bulk_Node :
 
        if LINE[:8].replace(" ","") == "GRID" :
 
            CARD = LINE[:9].replace(" ", "")
            ID   = LINE[9:16].replace(" ", "")
            CP   = LINE[16:24].replace(" ", "")
            X1   = LINE[24:32].replace(" ", "")
            X2   = LINE[32:40].replace(" ", "")
            X3   = LINE[40:48].replace(" ", "")
            CD   = LINE[48:56].replace(" ", "")
            PS   = LINE[56:64].replace(" ", "")
            SEID = LINE[64:72].replace(" ", "")
 
            CARD = CARD + (FORMAT - len(CARD))* " "
            ID   = ID   + (FORMAT - len(ID))  * " "
            CP   = CP   + (FORMAT - len(CP))  * " "
            X1   = X1   + (FORMAT - len(X1))  * " "
            X2   = X2   + (FORMAT - len(X2))  * " "
            X3   = X3   + (FORMAT - len(X3))  * " "
            CD   = CD   + (FORMAT - len(CD))  * " "
            PS   = PS   + (FORMAT - len(PS))  * " "
            SEID = SEID + (FORMAT - len(SEID))* " "
 
            Bulk_Node_Duplicate.write(CARD + str(N_ID) + CP + X1 + X2 + X3 + CD + PS + SEID + '\n')
 
            N_ID = N_ID + STEP
 
        else :
 
            Bulk_Node_Duplicate.write(LINE + '\n')
 
 
 
NODE_FILE      = open("MPC_NODE.dat", "r")
DUPLICATE_NODE = open("duplicate_node.dat", "w")
 
Duplicate_Node(NODE_FILE,DUPLICATE_NODE)
 
NODE_FILE.close()
DUPLICATE_NODE.close()
Qui peux m'expliquer pourquoi j'ai ces deux sauts de ligne ?

Merci d'avance pour votre aide